小编lui*_*dev的帖子

Visual Studio架构比较生成ALTER TABLE sql而不是使用临时表

我正在测试我的PHP CMS Web应用程序从旧版本(版本1)升级到新版本(版本2).它使用SQL Server 2008 R2数据库.

作为我的测试和文档过程的一部分,我需要获取升级期间将对数据库结构进行的所有更改的列表.为此,我使用Microsoft Visual Studio 2015 Community Edition来比较和"区分"数据库的两个版本.Visual Studio为我提供了升级期间对数据库表所做的所有更改的列表.那很好,但有些东西我不喜欢.

将列添加到新版本数据库中的表时,似乎Visual Studio 2015模式比较工具会以这种方式生成用于添加新列的sql语句:

  1. 它创建了一个临时表: CREATE TABLE [dbo].[tmp_ms_xx_users]
  2. 它将旧表中的数据插入临时表: INSERT INTO [dbo].[tmp_ms_xx_users] SELECT... FROM [dbo].[users]
  3. 然后它丢弃原始表: DROP TABLE [dbo].[users]
  4. 并将临时表重命名为与原始表相同的名称. EXECUTE sp_rename N'[dbo].[tmp_ms_xx_users]', N'users'

[dbo].[users]表现在包含所有原始数据和新列.这没关系,但我不喜欢在我的文档中使用临时表和DROP TABLE语句.

有没有办法让Visual Studio生成表更改语句

ALTER TABLE [dbo].[users] ADD [a_new_column] ... 要么

ALTER TABLE [dbo].[users] DROP COLUMN [old_column] ...

语句而不是使用临时表?

这将使我的文档更好.(我只是出于文档目的而这样做.应用安装程序实际上会在升级过程中处理所有数据库更改.)

谢谢.

database sql-server-2008-r2 visual-studio-2015

6
推荐指数
1
解决办法
880
查看次数

通过SSMS:OUT命令创建的.csv文件中的空行

我在MSSQL 2008 R2管理工作室中使用这样的代码将SELECT语句的结果写入网络共享上的csv文件:

SET NOCOUNT ON;   
GO    
:OUT \\163.123.45.678\SomeFolder\mydata.csv    
SELECT id, name, surname FROM sometable;    
GO
Run Code Online (Sandbox Code Playgroud)

这会mydata.csv在正确的位置创建文件,但在csv文件的末尾有一个额外的空行.如何防止在csv文件中创建该空白行?

以上是将sql查询的输出写入文本文件的最佳方法吗?我不能使用BCP.

谢谢.

sql sql-server sql-server-2008

5
推荐指数
1
解决办法
2020
查看次数