Ошибка при создании файла dbschema с помощью VSDBCMD.exe

У меня есть проект базы данных VS 2010, которому требуется ссылка на базу данных Dynamics CRM. У меня есть удаленный доступ к 32-разрядному серверу Windows 2003 R2 SP2. Моя стратегия заключается в создании файла .dbschema и использовании его в качестве эталона.

Я нашел два лучших ресурса для создания файла .dbschema из stackoverflow и MSDN.

Ошибка, которую я получил:

Поставщик схемы базы данных не может быть определен из предоставленной строки подключения. Убедитесь, что строка подключения действительна для поставщика ADO.NET, используемого для вашего поставщика базы данных, и что у вас есть права, необходимые для подключения к серверу.

Шаги, которые я сделал:

  1. Создайте временную папку C:\temp
  2. Скопируйте содержимое папки C:\Program Files (x86)\Microsoft Visual Studio 10.0\VSTSDB\Deploy в C:\temp
  3. Скопируйте несколько DLL из списка ниже папки C:\Program Files (x86)\Microsoft SQL Server Compact Edition\v3.5 в 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. I tried running VSDBCMD locally from C:\temp with CMD run as administrator. I have also copied C:\temp to the server and tried running it there.

VSDBCMD /a:Import /cs:"Provider=SQLOLEDB.1;Пароль=********;Сохранение сведений о безопасности=True;Идентификатор пользователя=sa;Исходный каталог=VANILLA_MSCRM;Источник данных=***** ***"/dsp:Sql/модель:VANILLA_MSCRM.dbschema

Я пробовал все комбинации источников данных = {., (local), localhost, IP-адрес, имя машины, доменное имя} с 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 ошибочным подходом?


person Tim Partridge    schedule 25.10.2010    source источник


Ответы (1)


Я тоже пробовал это и обнаружил, что у меня работает следующее (запустите из командной строки VS2010 и запустите, используя учетную запись с привилегиями системного администратора в базе данных):

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