3

Dynamics CRM データベースへのデータベース参照が必要な VS 2010 データベース プロジェクトがあります。32 ビット Windows 2003 R2 SP2 サーバーにリモート アクセスできます。私の戦略は、.dbschema ファイルを作成し、それを参照として使用することです。

.dbschema ファイルを作成するために私が見つけた 2 つの最良のリソースは、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 フォルダーの以下のリストからいくつかの DLL を 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 にコピーする必要はありませんが、他の DLL は Program Files (x86 )。

    1. CMD を管理者として実行し、C:\temp から VSDBCMD をローカルで実行してみました。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 /モデル:VANILLA_MSCRM.dbschema

Data Sources = {., (local), localhost, the IP address, the machine name, the domain name} と Providers = {SQLOLEDB.1, SQLNCLI10.1, SQLNCLI.1} のすべての組み合わせを試しました。すべて同じエラーになります。明らかに、(ローカル) と 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 を試してみたところ、正常に実行できました。

この問題のトラブルシューティング方法を教えてください。CRM データベースを参照するために .dbschema ファイルを作成するという私の戦略は間違ったアプローチですか?

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 に答える