14

几个小时以来,我一直在寻找一个“明确的”解决方案,但无法准确找出问题所在,所以希望有人能指出我正确的方向。

我正在尝试为远程计算机上的数据库(MDF 文件 DB)创建脚本,并使用它在本地创建相同的数据库。我在两台机器上都安装了 Visual Studio 2010,因此使用数据库发布向导生成脚本。

接下来,我在本地 Visual Studio 中创建了一个空白数据库(另一个 MDF 文件数据库)并选择创建一个新查询。我已经粘贴了复制的脚本,但是当我尝试运行它时,我得到了几十个“GO 附近的语法错误”错误。当警报弹出窗口从我的屏幕底部消失时,我不确定总共有多少。不过,这似乎很多。

除了脚本的最顶部之外,我修剪了所有内容,但仍然遇到相同的错误。现在看起来像这样:

SET ANSI_NULLS ON

GO

我仍然收到“GO附近的语法不正确”错误。

该工具生成的脚本是否存在固有问题,还是我做错了什么?

远程数据库是 2008 R2 而我的本地数据库只是普通的 2008,因此我不只是复制 MDF 文件。

如果有人有任何建议,他们将非常受欢迎。

4

2 回答 2

19

从文档:

GO 不是 Transact-SQL 语句;它是 sqlcmd 和 osql 实用程序以及 SQL Server Management Studio 代码编辑器识别的命令。

要么使用这样的工具来执行脚本,要么省略 GO 命令。

于 2010-11-21T14:06:58.507 回答
8

我最近遇到了同样的问题并找到了正确的答案(我认为)。

如果您在除 SQL Server Management Studio Code 编辑器之外的某个随机编辑器中在行尾创建查询,您可能会得到一个CARRIAGE RETURN (\r)字符而不是CARRIAGE RETURN + LINE FEED (\r\n)。即使您在行尾按 DEL 键然后 Enter 它也不会改变。

使用 Notepad++ 将 CR (\r) 替换为 CRLF (\r\n) - 保持顺序,这很重要!

于 2012-10-30T21:06:49.573 回答