3

我有一个 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 Files (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 数据库的策略是一种错误的方法吗?

4

1 回答 1

1

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

vsdbcmd /action:import /connectionstring:"Integrated Security=True;Data Source=<SERVER>;Initial Catalog=<DATABASE>" /modelfile:"<DATABASE>.dbschema"
于 2011-08-15T09:58:14.330 回答