使用VSDBCMD.exe创建dbschema文件时出错

时间:2010-10-25 16:15:44

标签: sql-server visual-studio-2010 database-project

我有一个VS 2010数据库项目,需要对Dynamics CRM数据库的数据库引用。我可以远程访问32位Windows 2003 R2 SP2服务器。我的策略是创建一个.dbschema文件并将其用作参考。

我在创建.dbschema文件时找到的两个最佳资源来自stackoverflowMSDN

我收到的错误是:

  

无法从提供的连接字符串确定数据库架构提供程序。检查连接字符串是否对用于数据库提供程序的ADO.NET提供程序有效,并且您具有连接到服务器所需的权限。

我所做的步骤是:

  1. 创建临时文件夹C:\ temp
  2. 将文件夹C:\ Program Files(x86)\ Microsoft Visual Studio 10.0 \ VSTSDB \ Deploy的内容复制到C:\ temp
  3. 将以下列表中的一些DLLS从文件夹C:\ Program Files(x86)\ Microsoft SQL Server Compact Edition \ v3.5复制到C:\ temp
  4. 此时MSDN指令说我应该有文件

    • DatabaseSchemaProviders.Extensions.xml
    • Microsoft.Data.Schema.dll
    • Microsoft.Data.Schema.ScriptDom.dll
    • Microsoft.Data.Schema.ScriptDom.Sql.dll
    • Microsoft.Data.Schema.Sql.dll
    • Microsoft.SqlServer.BatchParser.dll
    • Sqlceer35en.dll
    • Sqlceme35.dll
    • Sqlceqp35.dll
    • Sqlcese35.dll
    • System.Data.SqlServerCe.dll
    • VSDBCMD.EXE

    这几乎是真的。

    • DatabaseSchemaProviders.Extensions.xml实际上位于C:\ temp \ Extensions \ SqlServer \中,所以我也将它复制到C:\ temp,以防它需要在同一目录级别
    • 在GAC中找到了Microsoft.SqlServer.BatchParser.dll,因此我可能不需要将其复制到C:\ temp但是我还是这样做了,因为我的其他DLL所以采用了32位版本来自Program Files(x86)。

      1. 我尝试在C:\ temp本地运行VSDBCMD,CMD以管理员身份运行。我还将C:\ temp复制到服务器并尝试在那里运行。
      

    VSDBCMD / a:导入/cs:"Provider=SQLOLEDB.1;Password=********;Persist Security Info = True;用户ID = sa;初始目录= VANILLA_MSCRM;数据源= ** ******“/ dsp:Sql /model:VANILLA_MSCRM.dbschema

    我已尝试使用Providers = {SQLOLEDB.1,SQLNCLI10.1,SQLNCLI.1}的所有数据源组合= {。,(本地),localhost,IP地址,计算机名称,域名}。都导致同样的错误。显然,(本地)和localhost仅在从服务器运行时使用。我通过UDL文件(\ http://msdn.microsoft.com/en-us/library/e38h511e%28VS.71%29.aspx)构建连接字符串来测试它。正如这篇文章所建议的\ http://social.msdn.microsoft.com/Forums/en-US/vstsdb/thread/dabd14fa-a805-4855-b3f1-33b37b16c5b1我尝试了sqlcmd并且可以成功运行它。

    如何解决此问题?我的策略是创建一个.dbschema文件来引用我的CRM数据库是一种错误的方法吗?

1 个答案:

答案 0 :(得分:1)

我也试过了,发现以下内容对我有用(从VS2010命令提示符运行,并使用对数据库具有sysadmin特权的帐户运行):

vsdbcmd /action:import /connectionstring:"Integrated Security=True;Data Source=<SERVER>;Initial Catalog=<DATABASE>" /modelfile:"<DATABASE>.dbschema"