Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 执行多个UTF-8编码的SQL脚本_Sql Server_Visual Studio_Visual Studio 2008_Sql Server 2008 - Fatal编程技术网

Sql server 执行多个UTF-8编码的SQL脚本

Sql server 执行多个UTF-8编码的SQL脚本,sql-server,visual-studio,visual-studio-2008,sql-server-2008,Sql Server,Visual Studio,Visual Studio 2008,Sql Server 2008,我使用VisualStudio2008数据库项目来管理我的数据库脚本和版本控制。默认情况下,VisualStudio脚本模板以UTF-8格式编码。当我尝试连接用于数据库发布的脚本(使用DOS命令“type*.sql>dbscripts.sql”)并从SQLServerManagementStudio运行连接的脚本时,出现无效字符错误。但是,如果我将每个脚本转换为ANSI格式(使用记事本),并连接它们,那么在运行连接的脚本时不会出现任何错误。但是,将每个脚本转换成不同的编码格式是乏味的。无论脚本的

我使用VisualStudio2008数据库项目来管理我的数据库脚本和版本控制。默认情况下,VisualStudio脚本模板以UTF-8格式编码。当我尝试连接用于数据库发布的脚本(使用DOS命令“type*.sql>dbscripts.sql”)并从SQLServerManagementStudio运行连接的脚本时,出现无效字符错误。但是,如果我将每个脚本转换为ANSI格式(使用记事本),并连接它们,那么在运行连接的脚本时不会出现任何错误。但是,将每个脚本转换成不同的编码格式是乏味的。无论脚本的编码格式如何,执行多个SQL脚本的最佳方法是什么?我是否需要创建一个批处理文件并使用sqlcmd运行它并将输出重定向到文本文件?还有其他选择吗?
提前谢谢。

这是因为文件中有BOM表。TYPE命令太原始,无法检测它,只会将3个字节复制到输出

您可以更改用于.sql文件的编码。文件+另存为,单击“保存”按钮上的箭头,使用编码保存并选择当前代码页。就像西欧和美洲的1252一样,它可能是名单上的第一个。这和你用记事本做的一样


如果服务器使用不同的代码页运行,并且您的脚本包含重音字符,请小心可能会遇到的麻烦。我会自己编写一个小实用程序,使用Directory.GetFiles和StreamReader/Writer来解决这个问题。

这是因为文件中有BOM表。TYPE命令太原始,无法检测它,只会将3个字节复制到输出

您可以更改用于.sql文件的编码。文件+另存为,单击“保存”按钮上的箭头,使用编码保存并选择当前代码页。就像西欧和美洲的1252一样,它可能是名单上的第一个。这和你用记事本做的一样


如果服务器使用不同的代码页运行,并且您的脚本包含重音字符,请小心可能会遇到的麻烦。我会自己编写一个小实用程序,使用Directory.GetFiles和StreamReader/Writer来解决这个问题。

你应该使用
copy*.sql dbscripts.sql
你应该使用
copy*.sql dbscripts.sql
找到这个链接,它使用Windows Powershell生成“SQLCMD”命令。对于连接,除了以ANSI格式保存每个文件外,似乎没有其他解决方案。我至少可以使用该命令生成一个包含所有sqlcmd命令的文件,而不必连接它们


找到此链接,该链接使用Windows Powershell生成“SQLCMD”命令。对于连接,除了以ANSI格式保存每个文件外,似乎没有其他解决方案。我至少可以使用该命令生成一个包含所有sqlcmd命令的文件,而不必连接它们


简单的解决方案是在命令-f 65001中添加代码页标志


sqlcmd/S myServer/d myDatabase-E-f 65001-i myutfscript without bom.sql

简单的解决方案是在命令-f 65001中添加代码页标志


sqlcmd/S myServer/d myDatabase-E-f 65001-i MyUTFScriptWithoutBOM.sql

已经尝试过了,但也不起作用,我仍然收到无效字符错误。@RKP,如果先合并文件,然后将最终文件转换为ansi,该怎么办。所以你只需要做一次转换。。值得一试……不,我也试过了,但没有成功。在这种情况下,无效字符可见,这是唯一的区别。我猜使用“sqlcmd”命令似乎是创建批处理文件并将所有文件名放入其中的唯一选项。我本可以重写VisualStudio模板以使用ANSI格式,但我正在寻找更好的方法来解决此问题。谢谢您的回复。已经尝试过了,但也没有成功,我仍然收到无效字符错误。@RKP,如果您先合并文件,然后将最终文件转换为ansi,该怎么办。所以你只需要做一次转换。。值得一试……不,我也试过了,但没有成功。在这种情况下,无效字符可见,这是唯一的区别。我猜使用“sqlcmd”命令似乎是创建批处理文件并将所有文件名放入其中的唯一选项。我本可以重写VisualStudio模板以使用ANSI格式,但我正在寻找更好的方法来解决此问题。谢谢你的回复。