我無法確定在您的方案中導致錯誤的原因。我試圖根據這個問題重新創建場景。這個例子可能會幫助你弄清楚你有什麼不同。
創建一個名爲dbo.Error
CREATE TABLE [dbo].[Error](
[Id] [int] NOT NULL,
[SPName] [varchar](20) NOT NULL
) ON [PRIMARY]
GO
一個簡單的表格填充表使用下面的腳本的一些樣本數據。
INSERT INTO dbo.Error (Id, SPName) VALUES
(1000, 'export/INSERT'),
(1000, 'export/DELETE'),
(1001, 'export/INSERT');
GO
在SSIS包上,創建連接管理器或數據源以連接到託管上述表的數據庫。在這個例子中,我創建了一個OLE DB連接管理器,因爲這是推薦的SQL Server數據庫提供者,並將連接管理器命名爲Practice。
在包上創建以下變量。
![Variables](https://i.stack.imgur.com/9gxGS.png)
設置變量Id
爲值1000,這樣我們將在執行SQL任務執行查詢將獲取至少兩行。
設置變量SQLExportError
以下查詢:
SELECT COUNT(號),從ErrorTableCount WHERE dbo.Error在SPName( '出口/ INSERT', '導出/刪除')和id =
選擇變量SQLFetch
並按F4查看屬性。設置屬性EvaluateAsExpression至True。點擊省略號按鈕表達式屬性並設置下列表達式。
@[User::SQLExportError] + (DT_WSTR,30)@[User::Id]
![Expression](https://i.stack.imgur.com/obUN8.png)
拖放一個執行SQL任務到控制流標籤。如下所示配置執行SQL任務的常規頁面,以執行存儲在表達式變量中的SQL查詢。
![Execute SQL Task - General](https://i.stack.imgur.com/3dWDK.png)
配置結果集頁面,接受查詢返回的值,並將其存儲在變量。
![Execute SQL Task - Result Set](https://i.stack.imgur.com/m3A98.png)
添加腳本任務查看存儲在變量中的值。配置腳本任務來讀取可變ErrorTableCount
![Script Task](https://i.stack.imgur.com/vAXDY.png)
下面的C#代碼添加到腳本任務。
public void Main()
{
MessageBox.Show(String.Format("Value in variable ErrorTableCount: {0}",
Dts.Variables["User::ErrorTableCount"].Value),
"Execute SQL Task - Single Row");
Dts.TaskResult = (int)ScriptResults.Success;
} =
![Script Task Code](https://i.stack.imgur.com/tzePV.png)
關閉腳本任務編輯器。控制流程看起來像這樣。
![Control flow](https://i.stack.imgur.com/HPe09.png)
當執行包,消息框應該與計數出現,因爲這是在採樣數據行已的Id的值設置爲1000。
的數量
希望能幫助你找到你的配置有問題。
![Package execution](https://i.stack.imgur.com/aSdzu.png)
@Siva,它是一種所謂的可變SQLExportError與id變量串聯。 – plditallo
您應該驗證連接測試是否可以將「結果集」配置爲「單行」,在「結果集」頁面中設置變量,將表達式放入SQLStatementSource中,如果該表達式仍不起作用,則需要更多信息來幫助你。 :) – Rednaxel