У меня есть сервер базы данных, к которому я не могу подключиться, используя предоставленные мне учетные данные. Однако в промежуточной версии того же сервера есть связанный сервер, который указывает на производственную базу данных. И промежуточный сервер, и связанный сервер имеют одинаковую схему.
Меня заверили, что я должен ожидать, что смогу подключиться к живому серверу, прежде чем мы начнем. К сожалению, я достиг точки в моей разработке, когда мне нужно больше, чем образцы записей токенов, которые в настоящее время находятся в промежуточной базе данных. Итак, я надеялся подключиться к связанному серверу.
До сих пор моя разработка против этой схемы была направлена против самого промежуточного сервера, использующего объекты Subsonic. Все работает нормально.
Я могу подключиться через SQL Server Management Studio к этому связанному серверу и напрямую выполнять свои запросы. Я также могу выполнять «ручные» запросы на C# к связанному серверу, подключив мою строку подключения к промежуточному серверу и запустив мои запросы как
ВЫБРАТЬ * ИЗ OpenQuery ([LINKEDSERVER], 'QUERY')
Однако объекты Subsonic - это то, что позволяет мне реализовать этот проект вовремя и в рамках бюджета, поэтому я не хочу делать прямые запросы в моем коде.
Я ищу, есть ли способ указать строку подключения к связанному серверу. Я просмотрел множество форумов и т. д. По этой теме, и большинство ответов, похоже, полностью затушевывают часть вопроса о «связанном сервере», сосредотачиваясь на базовом синтаксисе строки подключения.





создание связанного сервера из .NET не имеет никакого смысла, поскольку связанный сервер - это не что иное, как соединение от одного sqlserver к другому серверу (sql, file, excel, sybase и т.д.), по сути, это просто строка подключения (вы может выдавать себя за другое лицо и выполнять некоторые другие действия при создании связанного сервера).
Я не верю, что вы можете получить доступ к связанному серверу напрямую из приложения без синтаксиса OpenQuery. В зависимости от сложности вашей схемы может иметь смысл написать процедуру или sproc для заполнения промежуточной базы данных данными из вашей действующей базы данных.
Вы также можете рассмотреть возможность использования Redgates SQL Data Generator или любого другого инструмента для генерации данных. Redgates довольно прост в использовании.
Еще одна идея - можете ли вы получить резервную копию действующей базы данных, которую вы можете установить в процессе разработки для тестирования? Если вам нужны только данные для разработки и тестирования, вы, вероятно, вообще не захотите подключаться к своей производственной базе данных.
Создайте тестовые хранимые процедуры на сервере B, которые ссылаются на данные на сервере A через связанный сервер. например если ваш обычный sproc ссылается на таблицу на сервере B, скажите:
databaseA.dbo.tableName
затем используйте связанное имя сервера для ссылки на ту же базу данных / таблицу на сервере A:
linkedServerName.databaseA.dbo.tableName
Если сервер A идентичен по именам базы данных / таблицы / столбца, вы сможете сделать это с помощью некоторой быстрой работы по поиску / замене.
Один из способов - создать две строки подключения и при необходимости получить доступ к соответствующей базе данных. Второй вариант - создать соединение только для базы данных A и создать сервер ссылок для базы данных B в базе данных. Хорошая статья, мне она очень нравится. Я немного занимаюсь исследованием соединения Asp.net и обнаружил, что макротестирование www.macrotesting.com также является очень хорошим источником. Спасибо за статью .....
С Уважением... Меганатан .J