私はSSISパッケージで作業しています。私は名前のリストを持つ配列を持っています。これらの名前はテーブル名になります。これらのテーブルを作成するには作成テーブルの奇妙な問題
、Iループのパラメータを受け入れるストアドプロシージャを実行する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
とき1つの問題は来ます配列内の名前の番号は数字です。私はすべての名前が[]でストアドプロシージャに入ると言う必要があります。私は各実行の前にブレークポイントを作成しました。テーブル名が数字の場合、SSIS内でエラーが発生します(また、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内のエラーは次のとおりです。私は、テーブル名に変数を見て、それがOKだったブレークポイントで
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
、私は新しい「質問」でこの第二の質問をする必要がありますか?被験者の問題は解決されて以来。 ありがとうございました。
EDIT固定3
。 CREATE TABLEのSQLタスクエディタのパラメータが長く、varcharに変更されて滑らかになりました。 おかげ
それはquationの問題でしたが、エラーはSSISの中に残っていました。何か案が?メインポストにいくつかの情報を追加しました。 Thanks –