Використання посилань у проектах баз даних, Microsoft Docs

Для обробки різних ситуацій до проектів бази даних можна додати кілька типів посилань. Використання процедур для різних типів посилань дещо відрізняються.

У наступній таблиці наведено типи посилань, які можна додавати, а також ситуації, які дозволяють усунути ці посилання.

Проект бази даних (DBPROJ) у поточному рішенні.

Цей тип посилання додається для увімкнення кількох сценаріїв.

Додавши посилання та визначивши змінну для імені сервера (за потреби) та змінну для імені бази даних, в якій міститься об'єкт, можна створити посилання на об'єкт бази даних в одному проекті з іншого проекту. Ці міжбазові посилання використовуються, якщо база даних посилається на об'єкти інших баз даних. Щоб отримати додаткові відомості, див. Початок командної розробки баз даних, які посилаються на інші бази даних.

При додаванні посилання інший проект без визначення змінних створюється складовий проект. При проектуванні даного типу об'єкти будуть автоматично розгорнуті і в інших проектах. Для отримання додаткових відомостей див. розділ Створення складових проектів за допомогою посилань, наведених далі в цьому розділі.

Вихідні дані проекту бази даних (DBSCHEMA-файл), отримані з поточного чи будь-якого іншого рішення

Якщо потрібно додати посилання на об'єкти в іншій базі даних, потрібно ізолювати цю базу даних від інших розробників, слід додати посилання на файл схеми бази даних. До цього підходу можна вдатися, щоб уникнути змін, або у разі неможливості оновити базу даних. Наприклад, можна додати посилання на файл DBSCHEMA, якщо проект бази даних повинен посилатися на дані для входу або ключі, які використовуютьсяспільно та визначені на сервері, але застосовуються у кількох проектах бази даних. Щоб отримати додаткові відомості, див. Початок колективної розробки баз даних, які посилаються на загальні серверні об'єкти.

Іноді необхідно додати посилання на файл DBSCHEMA, що містить визначення об'єктів сервера, без перевірки параметрів на сервері при розгортанні проекту бази даних. У цьому випадку можна додати посилання на файл master.dbschema і визначити літерал для змінної бази даних, задавши значення "master". Це дозволить уникнути помилок, пов'язаних із конфліктами посилань на об'єкти, визначені у базі даних "master". Додаткові відомості про літерали див. у розділі Створення посилань на бази даних за допомогою літералів у цьому розділі.

Файл master.dbschema, що містить визначення об'єктів системи

При необхідності створити посилання на об'єкти системи, наприклад процедури, системні таблиці, системні уявлення або системні каталоги, слід додати посилання на відповідний файл master.dbschema для усунення конфліктів цих посилань. Наприклад, можна додати посилання на sys.sysobjects в процедурі, що зберігається. Файл master.dbschema поставляється разом з Visual Studio Premium для кожної підтримуваної версії SQL Server. DBSHEMA-файли знаходяться в папці [Program Files]\Microsoft Visual Studio 10.0\VSTSDB\Extensions\SqlServer\Версія\DBSchemas, де Версія - це версія SQL Server (наприклад, 2005 або 2008).

У цьому випадку можна додати посилання на відповідний файл master.dbschema і визначити літерал для змінної бази даних, задавши значення "master". Це дозволить уникнути помилок, пов'язаних із конфліктами посилань на об'єкти, визначені у базі даних "master". Для отримання додаткових відомостей про літерали див.Створення посилань на бази даних за допомогою літералів у цьому розділі.

Проект SQL для середовища CLR у поточному рішенні

Складання SQLCLR з проекту в поточному рішенні або з іншого джерела

Визначення XML-схеми, задане у XSD-файлі

Перед зв'язуванням схеми зі змінною, параметром або стовпцем для створення типізованих змінних, параметрів та стовпців XML, цю схему потрібно зареєструвати. Типізована версія XML використовується у разі справедливості одного з таких тверджень.

Для даних XML задані схеми, і сервер повинен перевірити ці дані на відповідність цим схемам.

Необхідно оптимізувати зберігання та запити відповідно до відомостей про тип.

Необхідно підвищити ефективність використання відомостей про тип під час компіляції запитів.

Визначення міжбазових посилань

Сценарії для міжбазових посилань

Visual Studio Premium підтримує такі сценарії.

Ви створили проект бази даних та імпортували схему з наявної бази даних. Ця схема містить об'єкти, що посилаються на об'єкти в одній або більше баз даних. У властивостях проекту ви визначили відповідні посилання та замінили явні імена сервера та бази даних змінними SETVAR. Завдяки такому визначенню міжбазові посилання можна перевірити під час розробки. Можна розгорнути проект бази даних в ізольованому середовищі розробки, де ім'я цільового сервера може відрізнятись від імені цільового сервера в робочому середовищі.

Є проект бази даних, що містить міжбазові посилання, ці посилання використовують змінні SETVAR для ідентифікації серверів і баз даних. Можна змінити імена цих змінних та визначити визначення об'єктів, які містять ці посилання.

Необхідно додати посилання на додаткові схеми базиданих для проекту бази даних. Потрібно спільно використовувати з іншими учасниками робочої групи ці схеми, а чи не інші проекти бази даних. Можна додати посилання на файли схем бази даних (з розширенням DBMETA) для цих проектів і повернути в систему керування версіями тільки ці файли схеми. Використовуючи такий підхід, можна обмежити доступ до проекторів бази даних, які містять схеми, посилання на які потрібно додати. Слід також використовувати цей підхід, якщо потрібно розгорнути проект бази даних, але не ті проекти, що від нього залежать.

Посилання на проекти баз даних та файли схеми

При додаванні посилання на проект бази даних можна вказати інший проект бази даних або файл схеми, який створюється при побудові проекту бази даних.

Якщо таке твердження є справедливим, потрібно додати посилання на інший проект бази даних.

Якщо справедливо одне з таких тверджень, потрібно додати посилання на файл схеми.

Необхідно послатись на базу даних, проект якої не входить до складу поточного рішення.

Необхідно розгорнути один проект, не розгортаючи проекти, від яких залежить.

Ви посилаєтеся на схему бази даних, зміна якої є малоймовірною. У цьому сценарії можна повернути файл схеми бази даних до системи керування версіями.

Обмеження міжбазових посилань

При імпорті схеми бази даних посилання інші бази даних у визначеннях об'єктів призводять до висновку попереджень, оскільки проект бази даних неспроможна перевірити ці посилання перед розгортанням. Після визначення посилань бази даних у властивостях проекту можна перевірити визначення об'єктів і дозволити попередження. Потім можна оновити визначення об'єктів, замінивши імена серверів та баз даних змінними. Можна, можливотакож використовуватиме для виконання цієї підстановки оптимізація коду. Щоб отримати додаткові відомості, див. Практичний посібник. Додавання посилань на проекти бази даних та Практичний посібник. Перейменування посилань на сервер чи базу даних.

Також діють такі обмеження.

Можна додати посилання на базу даних, тільки якщо є відповідний проект бази даних.

Перш ніж додавати посилання на файл схеми проекту бази даних, цей проект бази даних необхідно побудувати.

Необхідно побудувати проекти бази даних, на які ви посилаєтеся, щоб міжбазові посилання дозволялися без попереджень.

Якщо ви змінюєте конфігурацію побудови для вирішення або проекту бази даних, на яку посилаєтеся, може знадобитися перебудувати рішення або проект, щоб міжбазові посилання на них дозволялися без попереджень.

Якщо ви посилаєтеся на об'єкт у проекті бази даних на іншому сервері, необхідно визначити його на цільовому сервері як зв'язаний сервер. Для отримання додаткових відомостей див. Практичний посібник. Додавання посилань на проекти бази даних.

Посилання, що включають змінні SETVAR, повинні мати форму «[$(ім'яЗмінної)]». Якщо опустити квадратні дужки, розгортання проекту бази даних може скінчитися невдачею.

Імена змінних SETVAR мають бути унікальними. Якщо ім'я сервера збігається з ім'ям база даних, необхідно визначити змінні з різними іменами, але дозволені як одне й те саме значення.

Питання безпеки

Файл схеми, створюваний під час побудови проекту бази даних, містить інформацію про схему цього проекту. Слід обмежити доступ до цього типу файлу, щоб захистити інформацію про схему. Файли схеми можна використовувати спільно з іншимиучасниками команди, повернувши їх у систему керування версіями без розгортання на цільовому сервері. Якщо проект бази даних для тієї бази даних, на яку ви посилаєтеся, знаходиться в тому самому рішенні. інші розробники проекту отримають доступ при синхронізації із системою керування версіями та побудові рішення.

Приклад міжбазового посилання

За наявності двох проектів бази даних, ReportDb і DependentDb, може виникнути необхідність створення посилань на об'єкти DependentDb з ReportDb. У такому разі слід розпочати з додавання посилання у властивості проекту бази даних DependentDb та визначення змінних, як зазначено нижче.

Значенням RefServer є ім'я сервера, де розташований проект DependentDb. Значенням RefDatabase є ім'я цільової бази даних, розгорнутої проектом DependentDb. У цьому вся прикладі RefServer має значення StageSvr, а RefDatabase – значення DepDb.

Для ReportDb можна додати уявлення, в якому будуть відображатися всі стовпці таблиці Employee у DependentDb. Цю таблицю необхідно розгорнути у базі даних під назвою DepDb на сервері з ім'ям StageSvr. Щоб створити визначення об'єкта для цього представлення, додайте такі оператори:

Створення складових проектів за допомогою посилань

Проекти бази даних та серверів не охоплюють усіх сценаріїв, які можуть виникати під час розгортання бази даних. Щоб охопити складніші сценарії, можна створити складові проекти із двох і більше проектів.

Під час створення складеного проекту з'являється можливість реалізації наступних сценаріїв.

Можна керувати схемами бази даних, які посилаються на загальні облікові дані для входу чи ключів. Щоб отримати додаткові відомості, див. Початок колективної розробки баз даних, що посилаються на загальні серверніоб'єкти.

Можна поділити велику базу даних на підпроекти, щоб підвищити продуктивність чи відокремити схеми чи типи об'єктів. Потреба таких змін може виникнути у разі спільного використання об'єктів кількома базами даних, які відрізняються іншим характеристиками. Проект можна розділити на два або більше підпроектів, лише якщо така зміна не призведе до створення циклічного посилання.

При розгортанні складеного проекту розгортаються також об'єкти у всіх проектах бази даних, куди він посилається. Щоб отримати додаткові відомості, див. Початок командної розробки великих баз даних.

Додавання посилань на базу даних із використанням літералів

Щоб визначити назву вказаної бази даних у цільовому середовищі розгортання, можна визначити змінні посилання на базу даних. Якщо змінні SQLCMD використовувати не потрібно, оскільки ім'я кінцевої бази даних серед розгортання завжди залишається незмінним, замість них можна задати літерал, значенням якого є ім'я зазначеної бази даних.

При використанні змінних слід дотримуватись наступного синтаксису:

Якщо замість них використовується літерал, синтаксис має бути наступним:

Щоб отримати додаткові відомості про визначення значення літералу, див. Практичний посібник. Додавання посилань на проекти бази даних.