通过isql一致地释放数据库

时间:2008-09-23 09:37:11

标签: sql-server

我使用isql通过批处理文件向SQL Server 2000发布数据库。使用批处理文件,因此可以将多个文件一致地发布到不同的SQL Server(开发,测试,实时)。

SQL Server使用ANSI代码页1252(来自sp_helpsort),但isql是使用代码页437的OEM客户端。这意味着在脚本运行时转换所有扩展字符(ASCII代码> 128),导致脚本中包含“£”等字符时的结果不一致。差异在此Microsoft knowledgebase article中解释。

可能的解决方案是: -

  • 使用Unicode和保存脚本 使用osql。
  • 使用SQL Server客户端网络实用工具(写入注册表项)关闭AutoAnsiToOem设置。

这两种选择都依赖于各种人一贯的做事。保存文件时,所有人都必须选择相同的代码页选项,或者执行构建的所有人必须为AutoAnsiToOem设置相同的选项。

有没有办法强制在SQL脚本中或在调用它的批处理文件中使用代码页,这样无论文件的保存方式或各种设置如何,都始终一致地释放构建。谁执行释放?

2 个答案:

答案 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。