通过isql一致地发布数据库版本
时间:2020-03-06 14:35:22 来源:igfitidea点击:
我正在使用isql通过批处理文件将数据库版本发布到SQL Server 2000。使用批处理文件,以便将多个文件一致地发布到不同的SQL Server(开发,测试,实时)。
SQL Server使用ANSI代码页1252(来自sp_helpsort),但是isql是使用代码页437的OEM客户端。这意味着在运行脚本时会转换所有扩展字符(ASCII代码> 128),从而导致字符不一致的结果包括在脚本中。 Microsoft知识库文章对此进行了解释。
可能的解决方案是:-
- 使用Unicode保存脚本并使用osql。
- 使用SQL Server客户端网络实用程序(写注册表项)关闭AutoAnsiToOem设置。
这两种选择都依赖于各种人始终如一地做事。保存文件时,所有人都必须选择相同的代码页选项,否则所有执行构建的人都必须为AutoAnsiToOem设置相同的选项。
有没有一种方法可以强制在SQL脚本中或者在调用它的批处理文件中强制使用代码页,因此,无论文件的保存方式或者执行此操作的人员的各种设置如何,始终可以始终释放生成版本释放?
解决方案
isql已过时。它不包含在SQL Server 2005或者更高版本中,因为它使用了过时的DB-Library连接。有关原因及其影响的信息,请参阅将早期版本的客户端连接到SQL Server 2000。
osql使用ODBC连接来连接到SQL Server。为了完整起见,在SQL Server 2005中使用了sqlcmd对其进行了补充,该命令使用OLE DB和SQL Native Client提供程序。
除了接受的答案之外,我已经针对SQL Server 2000数据库使用sqlcmd进行了测试,并且可以正常工作。显然,我们必须从装有SQL Server 2005客户端工具的计算机上运行sqlcmd。