如何修复使用Microsoft数据库发布向导生成的脚本中"GO附近的语法错误"错误?

Kev*_*son 14 database mdf visual-studio-2010 databasepublishingwizard

我一直在寻找一个"权威"的解决方案,现在已经有几个小时没有找到问题所在,所以希望有人能指出我正确的方向.

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

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

除了脚本的顶部以外我删除了所有内容,但我仍然遇到了相同的错误.它现在看起来像这样:

SET ANSI_NULLS ON

GO
Run Code Online (Sandbox Code Playgroud)

我仍然得到"GO附近的语法错误"错误.

这个工具生成的脚本是否存在内在错误,或者我做错了什么?

远程数据库是2008 R2,我的本地只是简单的2008,因此我不只是复制MDF文件.

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

Han*_*ant 19

来自文档:

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

使用这样的工具来执行脚本或省略GO命令.

  • 谢谢(你的)信息.我可能已经猜到它会是这样的,但我认为我一直认为微软不会创建一个工具来生成纯文本脚本,然后无法作为SQL脚本运行.啊,微软...... (4认同)

Leo*_*evi 8

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

如果您在某行的末尾的SQL Server Management Studio代码编辑器之外的某个随机编辑器中创建查询,则可能会获得CARRIAGE RETURN(\ r)字符而不是CARRIAGE RETURN + LINE FEED(\ r \n).即使您在该行的末尾点击DEL键,然后输入它也不会改变.

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