Dynamics CRM データベースへのデータベース参照が必要な VS 2010 データベース プロジェクトがあります。32 ビット Windows 2003 R2 SP2 サーバーにリモート アクセスできます。私の戦略は、.dbschema ファイルを作成し、それを参照として使用することです。
.dbschema ファイルを作成するために私が見つけた 2 つの最良のリソースは、stackoverflowとMSDNにあります。
私が受け取ったエラーは次のとおりです。
指定された接続文字列からデータベース スキーマ プロバイダを特定できませんでした。データベース プロバイダーに使用されている ADO.NET プロバイダーに対して接続文字列が有効かどうか、およびサーバーへの接続に必要な権限があるかどうかを確認してください。
私が行った手順は次のとおりです。
- 一時フォルダ C:\temp を作成します
- フォルダー C:\Program Files (x86)\Microsoft Visual Studio 10.0\VSTSDB\Deploy の内容を C:\temp にコピーします。
- 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 )。
- 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 ファイルを作成するという私の戦略は間違ったアプローチですか?