【问题标题】:Error creating dbschema file with VSDBCMD.exe使用 VSDBCMD.exe 创建 dbschema 文件时出错
【发布时间】:2010-10-25 16:15:43
【问题描述】:

我有一个 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. 从文件夹 C:\Program Files (x86)\Microsoft SQL Server Compact Edition\v3.5 的下面列表中复制一些 DLLS 到 C:\temp

此时 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 以防它需要位于同一目录级别
  • Microsoft.SqlServer.BatchParser.dll 是在 GAC 中找到的,所以大概我不需要将它复制到 C:\temp 但我还是这样做了,采用 32 位版本,因为我的其他 DLL 来自 Program文件 (x86)。

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

VSDBCMD /a:Import /cs:"Provider=SQLOLEDB.1;Password=********;Persist Security Info=True;User ID=sa;Initial Catalog=VANILLA_MSCRM;Data Source=** ******" /dsp:Sql /model:VANILLA_MSCRM.dbschema

我已经尝试了 Data Sources = {., (local), localhost, the IP address, the machine name, the domain name} 与 Providers = {SQLOLEDB.1, SQLNCLI10.1, SQLNCLI.1} 的所有组合。所有都会导致相同的错误。显然 ., (local) 和 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 数据库的策略是不是一种错误的方法?

【问题讨论】:

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


    【解决方案1】:

    我也尝试过,发现以下对我有用(从 VS2010 命令提示符运行,并使用对数据库具有系统管理员权限的帐户运行):

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

    【讨论】:

      猜你喜欢
      • 2018-01-20
      • 1970-01-01
      • 2016-10-28
      • 1970-01-01
      • 2013-09-03
      • 1970-01-01
      • 2018-08-17
      • 2014-06-18
      相关资源
      最近更新 更多