【问题标题】:Using a variable to create a variable使用变量创建变量
【发布时间】:2014-04-02 12:07:27
【问题描述】:

我有一个执行 SQL 任务,它查找数据库最新备份的路径并用它填充变量 (User::BackupFilePath)

我想将它传递给另一个任务,该任务将生成一个恢复数据库脚本并填充另一个用于恢复数据库的变量。

Select (
'ALTER DATABASE [Database] SET SINGLE_USER WITH ROLLBACK IMMEDIATE

RESTORE DATABASE [Database] 
FROM  DISK = ''' + **BackupFilePath** + '''  WITH  FILE = 1, NOUNLOAD,  REPLACE,  STATS = 5 

ALTER DATABASE [Database] SET MULTI_USER
GO'
) as RestoreScript

生成字符串的第二部分是返回此错误消息

[Execute SQL Task] Error: Executing the query "Select 'ALTER DATABASE [xxxx..." 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.

我使用的是 Visual Studio 2008 专业版

【问题讨论】:

  • 命令之间不应该有分号吗?

标签: sql ssis dts


【解决方案1】:

到目前为止,您似乎遇到了一个简单的问题:您为命令字符串设置的变量需要是字符串数据类型。

您的错误消息中提到了DBTYPE_I4,这是一个长整数:
http://msdn.microsoft.com/en-us/library/windows/desktop/ms711251%28v=vs.85%29.aspx

而您将命令字符串保存到其中的是字符串类型,例如 DBTYPE_STRDBTYPE_WSTR(请参阅上面的链接),在 SSIS 中通常称为 DT_STR(对于 ASCII 字符串)或 DT_WSTR(用于 Unicode 字符串)——请参阅下面的链接:
http://technet.microsoft.com/en-us/library/ms141036.aspx

希望对你有帮助……

【讨论】:

    【解决方案2】:

    一个可能的原因是您的第二个 SQL 任务(还原)的属性“ResulSet”/ 确保将其设置为“无”

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-03-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多