如何对生成的SQL脚本的输出进行排序?

Kev*_*ogg 6 sql-server sql-server-2005 sql-server-2008

我正在比较两个SQL服务器数据库(分别是开发和实时环境,SQL2005和SQL2008)来检查两者之间的差异.如果我为每个数据库生成一个脚本,我可以使用简单的文本比较来突出显示差异.

问题是脚本需要以相同的顺序来简化比较并避免存储过程的顺序不同的简单差异,但它们的内容是相同的.

所以如果我从开发中生成这个:

1: CREATE TABLE dbo.Table1 (ID INT NOT NULL, Name VARCHAR(100) NULL)
2: CREATE TABLE dbo.Table2 (ID INT NOT NULL, Name VARCHAR(100) NULL)
3: CREATE TABLE dbo.Table3 (ID INT NOT NULL, Name VARCHAR(100) NULL)
Run Code Online (Sandbox Code Playgroud)

这来自现场:

1: CREATE TABLE dbo.Table1 (ID INT NOT NULL, Name VARCHAR(100) NULL)
2: CREATE TABLE dbo.Table3 (ID INT NOT NULL, Name VARCHAR(100) NULL)
3: CREATE TABLE dbo.Table2 (ID INT NOT NULL, Name VARCHAR(100) NULL)
Run Code Online (Sandbox Code Playgroud)

比较两个突出显示第2行和第3行是不同的,但它们实际上是相同的,只是生成脚本向导在实时环境中的表2之前执行了table3.添加100个表,存储过程,视图等,这很快变得一团糟.

我目前的选择是:

  1. 在比较之前手动对内容进行排序
  2. 创建一个程序以按特定顺序创建脚本
  3. 查找对生成的脚本进行排序的免费软件应用程序
  4. 支付产品作为其工具套件的一部分
  5. (其他一些方法)

希望我只是错过了"按名称排序脚本"的复选框,但我看不到任何可以做到这一点的内容.我觉得我不应该为"排序输出"选项或许多其他不需要的工具这样简单的事情付费,所以选项4应该是最后的选择.

编辑 我可以完全访问这两种环境,但实时环境被锁定并托管在虚拟服务器上,远程桌面是实时访问的典型方式.我的偏好是将我可以复制到开发中并进行比较.我可以为数据库中的每种类型的对象生成脚本作为单独的文件(表,SP,函数等)

kd7*_*kd7 6

根据您的Visual Studio 2010版本(如果有的话),您可以通过数据菜单轻松完成此操作,根据您的原始意图,您可以节省一些时间.

编辑:生成实际的数据库然后比较如下所示的模式比较工具与比较两个脚本文件具有相同的净效果,您不必担心换行符等.

在此输入图像描述