Я работаю над пакетом SSIS. У меня есть массив со списком имен. Эти имена будут именами таблиц.Странная проблема с созданием таблицы
Чтобы создать эти таблицы, я петля редактор SQL задачи выполнение хранимой процедуры принимающую параметр (имя таблицы)
Код для хранимой процедуры:
ALTER PROCEDURE [dbo].[TLP.CreaTable]
(
@TableName VARCHAR(255)
)
AS
BEGIN
SET NOCOUNT ON
DECLARE @SQL VARCHAR(4000)
SET @SQL = 'IF NOT EXISTS (SELECT *
FROM sysobjects
WHERE id = OBJECT_ID(N''[dbo].' + @TableName + ''')
AND xtype in (N''U''))
CREATE TABLE [dbo].' + @TableName + '(
[Serial] [int] NOT NULL,
[Marc] [bit] NOT NULL,
[Sell] [bit] NOT NULL
) ON [PRIMARY]'
EXEC (@SQL)
END
Проблема возникает, когда один имен в массиве - это число. Я должен сказать, что все имена входят в хранимую процедуру с помощью []. Я создал точку останова перед каждым исполнением, и когда имя таблицы является числом, оно вызывает ошибку внутри SSIS (также для того, чтобы у вас была лучшая идея. Ive запускала хранимую процедуру из SQL Server Management Studio, и ошибка сохраняется, Ive использовал имя таблицы [3001], которое на самом деле является настоящим именем, вызывающим проблему).
EXEC dbo.[TLP.CreaTable] [3001]
Msg 170, Level 15, State 1, Line 5 Line 5: Incorrect syntax near '.3001'.
Если я что-то вроде
EXEC dbo.[TLP.CreaTable] RANDOM_NAME
Он работает просто идеально
Видимо есть какая-то ". в середине. Но я просто не могу найти его в коде.
Благодаря
EDIT:
Это был вопрос квотирования. Он работал в SQL Server Management Studio. Но когда я попробовал это в SSIS, ошибка продолжалась. Пробовал модифицировать код C#, чтобы добавить '[]' вместо просто [], и он не работал eiter.
Ошибка внутри SSIS заключается в следующем.
Error: 0xC002F210 at Create Table 030698, Execute SQL Task: Executing the query "EXEC dbo.[TLP.CreaTable] ?" failed with the following error: "An error occurred while extracting the result into a variable of type (DBTYPE_I4)". Possible failure reasons: Problems with the query, "ResultSet" property not set correctly, parameters not set correctly, or connection not established correctly.
С точки останова Я наблюдал переменную для имени таблицы и это было нормально "[3001]
Вызывающий внутри SQL Task Editor является
EXEC dbo.[TLP.CreaTable] ?
Но почему-то EXEC dbo.[TLP.CreaTable] '[3001]'
работы в SQL Server Management Studio, но не находится в SSIS.
Любая идея? Благодарю.
EDIT 2
С Im довольно новый на форуме, я должен задать этот второй вопрос в новой «вопрос»? Поскольку вопрос, выпущенный в теме, решался. Большое спасибо.
РЕДАКТИРОВАТЬ 3
Fixed. Параметр в CREATE TABLE Редактор SQL-запросов был длинным, изменил его на varchar, и он прошел гладко. Благодаря
Это был вопрос quation, но ошибка сохранялась внутри SSIS. Есть идеи? Добавлена информация на главный пост. Спасибо –