Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 динамический скрипт CREATE TABLE для создания таблицы в другой базе  [new]
harisma
Member

Откуда:
Сообщений: 243
Собственно, сабж.
Как написать динамический скрипт на создание таблицы в другой базе?
Когда пытаюсь написать
CREATE TABLE [MyDatabase].MyTable
- ругается:
The specified schema name "MyDatabase" either does not exist or you do not have permission to use it.


Почему динамический скрипт? Потому что все это будет делаться в хранимой процедурке и имя базы, в которой надо создать таблицу, будет приходить в виде строкового параметра.

А выполняться сформированый скрипт будет вот так:
declare @Sqlcmd
set @Sqlcmd = 'CREATE TABLE ' + @DatabaseID + '.MyTable(DOCTYPE varchar(16), docid varchar(16), CONSTRAINT [PK_MyTable] PRIMARY KEY (DOCTYPE ASC, DOCID ASC))'
exec(@sqlcmd)


Какие будут соображения?
15 окт 14, 19:04    [16709744]     Ответить | Цитировать Сообщить модератору
 Re: динамический скрипт CREATE TABLE для создания таблицы в другой базе  [new]
Crimean
Member

Откуда:
Сообщений: 13147
или create table db.schema.name / create table db..name
или exec db.dbo.sp_executesql N'create table schema.name ( ... ' / create table name (

вы "схему" пропускаете, однако
но это можно сделать только во втором случае
15 окт 14, 19:12    [16709777]     Ответить | Цитировать Сообщить модератору
 Re: динамический скрипт CREATE TABLE для создания таблицы в другой базе  [new]
Shakill
Member

Откуда: мск
Сообщений: 1887
harisma
CREATE TABLE [MyDatabase].MyTable


The specified schema name "MyDatabase" either does not exist or you do not have permission to use it.

Какие будут соображения?

прочитать сообщение об ошибке и указать все-таки имя схемы на своем месте
15 окт 14, 19:12    [16709779]     Ответить | Цитировать Сообщить модератору
 Re: динамический скрипт CREATE TABLE для создания таблицы в другой базе  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4893
Shakill,
Оберните запрос на CREATE TABLE такой командой

EXEC MyDatabase.dbo.sp_executesql N'CREATE TABLE dbo.MyTable...'


Либо пишите
CREATE TABLE MyDatabase.dbo.MyTable
15 окт 14, 20:12    [16710048]     Ответить | Цитировать Сообщить модератору
 Re: динамический скрипт CREATE TABLE для создания таблицы в другой базе  [new]
harisma
Member

Откуда:
Сообщений: 243
Crimean,
Спасибо. Получилось :)
16 окт 14, 13:53    [16713791]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить