Ошибка создания файла dbschema с VSDBCMD.exe - PullRequest
3 голосов
/ 25 октября 2010

У меня есть проект базы данных 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 \ Развернуть в 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

Это почти правда.

  • DatabaseSchemaProviders.Extensions.xml фактически находится в C: \ temp \ Extensions \ SqlServer \, поэтому я также скопировал его в C: \ temp на тот случай, если он должен находиться на том же уровне каталога
  • Microsoft.SqlServer.BatchParser.dll был найден в GAC, поэтому, предположительно, мне не нужно копировать его в C: \ temp, но я все равно сделал это, взяв 32-битную версию, потому что другие мои библиотеки DLL пришло из Program Files (x86).

    1. Я попытался запустить VSDBCMD локально из C: \ temp с CMD, запущенным от имени администратора. Я также скопировал C: \ temp на сервер и попытался запустить его там.

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

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

Как я могу устранить эту проблему? Является ли моя стратегия создания файла .dbschema для ссылки на мою базу данных CRM ошибочным подходом?

1 Ответ

1 голос
/ 15 августа 2011

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

vsdbcmd /action:import /connectionstring:"Integrated Security=True;Data Source=<SERVER>;Initial Catalog=<DATABASE>" /modelfile:"<DATABASE>.dbschema"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...