VS 2010 База данных проекта ошибка? - PullRequest
5 голосов
/ 20 августа 2010

У меня очень странная проблема с созданием проекта базы данных SQL Server 2008 из Visual Studio 2010. Я создал проект базы данных, а затем импортировал объекты базы данных и настройки из локальной базы данных, с которой я работаю. Затем я пошел, чтобы построить проект базы данных и получил следующую ошибку:

SQL03006: представление: [dbo]. [GovCAStaff] имеет неразрешенную ссылку на объект [CTS_Staff]. [Dbo]. [Client_Assignments].

Проблема заключается в том, что представление GovCAStaff ссылается на таблицу в другой базе данных (CTS_Staff). Тем не менее, у меня есть множество функций и хранимых процедур в одном проекте базы данных, которые ссылаются на таблицы в другой базе данных, но процесс сборки генерирует только предупреждения, а не ошибки. Кроме переписывания представления как функции, кто-нибудь знает способ избавиться от этой ошибки сборки? Является ли это известным ограничением просмотров в проектах баз данных? Во всяком случае, я действительно в тупик. Погуглили эту тему и не нашли ничего актуального. Любая помощь будет принята с благодарностью. Заранее спасибо.

1 Ответ

8 голосов
/ 21 августа 2010

Причина, по которой эта ошибка отображается в представлениях, но не в функциях и хранимых процедурах, заключается в том, что именно так будет реагировать сам SQL Server, если база данных / таблица на самом деле не существует. Другими словами, в SQL Server вы можете определить хранимые процедуры и функции, которые ссылаются на таблицы, которые не существуют или недоступны иным образом. Не так для представлений.

Способ решения этой проблемы заключается в добавлении «ссылки на базу данных» (файл .dbschema) в ваш проект, чтобы процесс сборки проекта знал о схеме этой другой базы данных. Где взять этот волшебный файл .dbschema?

  1. Создайте другой проект базы данных (предположительно в том же решении) для другой базы данных. Это наиболее удобно, так как вы можете просто создать «ссылку на проект», и все будет в курсе (в любом случае, вы хотели проект БД для этой другой базы данных, верно?).
  2. Создайте файл .dbschema вручную с помощью vsdbcmd .
  3. Если база данных является «системной» базой данных (например, «master» или «msdb»), вы можете использовать один из готовых файлов .dbschema ({Program Files} \ Microsoft Visual Studio 9.0 \ VSTSDB \ Extensions \ SqlServer {версия} \ DBSchemas).
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...