Как воссоздать VIEW как локальную таблицу в SQL Server? - PullRequest
0 голосов
/ 15 июня 2011

Я использую Microsoft SQL Server Management Studio и имею доступ к группе представлений без исходных таблиц, от которых зависит представление.Я скопировал некоторые данные из этого представления в файл и хотел бы импортировать их в базу данных, которую я создал локально для проведения некоторого анализа.

Простой способ сделать это - вручную записать *Оператор 1003 * смотрит на столбцы в представлении, но есть ли лучший способ получить оператор CREATE или CREATE VIEW, который я могу напрямую использовать для воссоздания аналогичной таблицы в моем localhost?

Ответы [ 2 ]

2 голосов
/ 15 июня 2011

Создайте связанный сервер на вашем локальном хосте с этим сервером.Затем используйте (при подключении к localhost)

SELECT * INTO NewTableName FROM LinkedServer.DBName.SchemaName.View

, и будет создана новая таблица в вашей текущей БД в localhost.

1 голос
/ 15 июня 2011

Обычно я предпочитаю использовать SSIS для преобразования данных. Первым шагом в пакете было бы получить определение, используя SELECT INTO ... WHERE 1=0, чтобы оно не передавало никаких данных и минимизировало время блокировки (результат SELECT INTO приводит к блокировкам всей базы данных). Затем, получив итоговую таблицу с определением исходного представления, скопируйте данные.

Если вы боитесь, что определение представления может измениться, придерживайтесь задачи INSERT INTO ... SELECT * FROM SQL. В противном случае сохраните определение, которое вы извлекли из SQL выше, и создайте таблицу (если она еще не существует). Затем используйте задачу потока данных для передачи данных.

Используя любой из этих подходов, вы избегаете сценария возможного двойного прыжка (если вы используете аутентификацию Windows). Он также может использоваться в задании агента SQL, если вам нужно делать это периодически. В противном случае это может быть немного излишним.

Или вы можете просто запустить первую часть в SSMS, но я определенно рекомендую использовать WHERE 1=0, затем использовать INSERT INTO вместо прямой SELECT INTO. Опять же, чтобы минимизировать блокировку базы данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...