我使用isql通过批处理文件向SQL Server 2000发布数据库。使用批处理文件,因此可以将多个文件一致地发布到不同的SQL Server(开发,测试,实时)。
SQL Server使用ANSI代码页1252(来自sp_helpsort),但isql是使用代码页437的OEM客户端。这意味着在脚本运行时转换所有扩展字符(ASCII代码> 128),导致脚本中包含“£”等字符时的结果不一致。差异在此Microsoft knowledgebase article中解释。
可能的解决方案是: -
这两种选择都依赖于各种人一贯的做事。保存文件时,所有人都必须选择相同的代码页选项,或者执行构建的所有人必须为AutoAnsiToOem设置相同的选项。
有没有办法强制在SQL脚本中或在调用它的批处理文件中使用代码页,这样无论文件的保存方式或各种设置如何,都始终一致地释放构建。谁执行释放?
答案 0 :(得分:2)
isql
已过时。它不包含在SQL Server 2005或更高版本中,因为它使用的DB-Library连接也已过时。由于原因及其影响,请参阅Connecting Early Version Clients to SQL Server 2000。
osql
使用ODBC连接连接到SQL Server。为了完整起见,SQL Server 2005中的sqlcmd
补充了这一点,它使用OLE DB和SQL Native Client提供程序。
答案 1 :(得分:0)
除了接受的答案之外,我已经使用sqlcmd对SQL Server 2000数据库进行了测试,并且它可以工作。您显然必须从安装了SQL Server 2005客户端工具的计算机上运行sqlcmd。