小编bsi*_*vel的帖子

如何将临时表作为参数传递到单独的存储过程中

我有一个存储过程,它接受一个输入参数@CategoryKeys varchar,并将其内容解析为临时表,#CategoryKeys.

        -- create the needed temp table.
        CREATE TABLE #CategoryKeys
          (
             CategoryKey SMALLINT
          );

        -- fill the temp table if necessary
        IF Len(rtrim(ltrim(@CategoryKeys))) > 0
          BEGIN
              INSERT INTO #CategoryKeys
                          (CategoryKey)
              SELECT value
              FROM   dbo.String_To_SmallInt_Table(@CategoryKeys, ',');
          END
Run Code Online (Sandbox Code Playgroud)

如果临时表有行,我想将表传递给一个单独的存储过程.我如何在单独的过程中创建一个参数来保存临时表?

sql sql-server stored-procedures

32
推荐指数
2
解决办法
6万
查看次数

DTS脚本任务运行时错误:调用目标已抛出异常

我在vs 2012 Ultimate中开发了一个ssis项目.我使用项目部署模型,项目设置为以32位模式运行.包在我的开发环境中执行时没有错误,但是当我将它部署到ssis目录并尝试在那里运行时,我收到以下错误:

错误对话框

我将项目部署到Windows Server 2012 R2,数据库也是2012年的SSIS目录.

我已在服务器上打开该项目,并尝试使用断点调试服务器上的脚本任务,但错误发生在到达断点之前.

如果我禁用所有脚本任务,则程序包在服务器上执行时没有错误.

我还通过禁用系统加密来更新服务器本地安全选项:使用FIPS兼容算法作为Microsoft支持上发布的可能解决方案.

我也试图在服务器上作为文件系统包运行,我得到了同样的错误.

我还检查了我的变量是否正确,甚至将它们设置为读写变量.

第一个脚本任务代码如下(但所有脚本任务失败/此包中有三个).脚本任务引用了一个名为UHS.IntegrationServices.CommonUtils的dll,它已被GACed和dll在VS 2005中使用framwork 2.0.50727构建.

Public Sub Main()

    Dim packageID As String = Dts.Variables("System::PackageID").Value.ToString()
    Dim strInterfaceName As String = Dts.Variables("System::PackageName").Value.ToString()
    Dim strConfigConnectionString1 As String = Dts.Variables("User::UHS_SSIS_CNXN_STR_CONFIG").Value.ToString()
    Dim myConnection As OleDb.OleDbConnection = New OleDb.OleDbConnection
    Dim mySqlCommand As OleDb.OleDbCommand = New OleDb.OleDbCommand
    Dim myReader As OleDb.OleDbDataReader = Nothing
    Dim rowsProcessed As Integer = 0

    Try
        myConnection.ConnectionString = strConfigConnectionString1
        myConnection.Open()

        Dim getEmailQuery As String = "SELECT Email …
Run Code Online (Sandbox Code Playgroud)

.net vb.net ssis visual-studio-2012

6
推荐指数
1
解决办法
3万
查看次数

是否可以在SQL Server计算列中使用Case语句

我有一个包含两个日期列的表,都允许空值.

如果FileDate不为null,则AsOfDate需要等于(FileDate - Offset),其中Offset是一个默认为零的整数列.

这是我的表格def:

CREATE TABLE [import].[CMAR_GLXXXX](
[FileDate] [date] NULL,
[LoadDTM] [date] NULL,
[AsOfDate] [date] NULL,
[AccountNumber] [varchar](50) NOT NULL,
[CostCenter] [varchar](50) NOT NULL,
[OffSet] [int] default (0) NOT NULL,
[Value] [decimal](10,2) NOT NULL
 ) ON [PRIMARY]
Run Code Online (Sandbox Code Playgroud)

我尝试使用以下内容:

(case when [File] IS NULL then NULL else dateadd(day,(-1 * [Offset]),[FileDate]) end)
Run Code Online (Sandbox Code Playgroud)

遗憾的是,计算出的列错误对话框在对表达式进

有任何想法吗?

t-sql sql-server sql-server-2012

0
推荐指数
1
解决办法
1230
查看次数

哪个更快:MAX()或IDENT_CURRENT?

哪个更快:Select Max(<IdentityKeyColumn>) + 1或者Select Ident_Current('<tablename>') +1

我有一个450万行的表,旧的存储过程使用: select @MaxID = Max(ID) + 1 from tablename.

我想更新它使用: Select @MaxID = ident_current('tablename') + 1

但是,我不确定从哪里ident_current获取表的最后一个标识值.是从master或msdb数据库中的系统表中查询还是对表的数据进行某种最大聚合?

我需要做一个ident_current应该更快的案例,但我还没有找到有关ident_current工作原理的细节.

sql-server

-4
推荐指数
1
解决办法
1786
查看次数