我正在處理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內部帶來了一個錯誤(同時爲了讓您有更好的想法,我從SQL Server Management Studio運行了存儲過程,並且錯誤仍然存在,我使用了表名[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
它的工作原理只是完美
顯然有一些 ''在中間。但我只是無法在代碼中找到它。
感謝
編輯:
這是報價的問題。它在SQL Server Management Studio中工作。但是當我在SSIS中嘗試時,錯誤仍然存在。試圖修改C#代碼添加「[]」而不是[],它不起作用。
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任務編輯器中調用是
EXEC dbo.[TLP.CreaTable] ?
但是不知怎麼的EXEC dbo.[TLP.CreaTable] '[3001]'
作品在SQL Server Management Studio中,但不在SSIS中。
有什麼想法?謝謝。
EDIT 2
由於Im相當新的論壇,我應該問第二個問題在一個新的「問題」?因爲在這個問題上發佈的問題得到了解決。 非常感謝。
EDIT 3
固定。 CREATE TABLE SQL任務編輯器中的參數很長,將其更改爲varchar並順利進行。 感謝
這是一個問題,但錯誤仍然存在於SSIS中。任何想法?在主帖中增加了一些信息。謝謝 – 2012-04-13 12:29:06