Mar*_*ark 2 sql-server ssis sql-server-2005
我花了几天时间试图解决这个问题.我有一个SSIS包,在序列容器中有2个执行SQL任务,一个是从表中的简单删除,下一个是插入前删除的简单插入.删除工作正常,所以连接等没问题.
插入失败,出现以下模糊且无用的消息.
failed with the following error: "Syntax error, permission violation, or other nonspecific error". Possible failure reasons: Problems with the query, "ResultSet" property not set correctly, parameters not set correctly, or connection not established correctly.
Run Code Online (Sandbox Code Playgroud)
插入有1个输入参数,该参数是绑定到设置为01/01/2011的日期时间变量的日期.当我更换?在具有硬编码日期的sql任务查询中,任务有效.我还在插入任务的预执行事件断点处查看了本地,并且变量没问题.
我还启动了一个SQL事件探查器会话,我看到删除查询命中数据库但没有插入任何内容(当它使用输入参数时).
我正在使用Visual Studio 2005 Pro SP1(不是我的选择)和SQL Server 2005 SP3.
问候
标记
小智 6
我知道你找到了问题的答案.但是,我想在此澄清一下,您使用OleDb连接执行的以下查询是有效的,并且它Execute SQL Task在SSIS包内工作.
INSERT INTO dbo.table1 (DateCol, OtherCol, OtherCol1)
SELECT ?, SourceCol1, SourceCol2 FROM dbo.SourceTable
Run Code Online (Sandbox Code Playgroud)
以下示例显示使用SSIS 2005(Business Intelligence Development Studio (BIDS) 2005)成功实现上述查询
分步过程:
创建两个名为dbo.Source并dbo.Destination使用"脚本" 部分下提供的脚本的表.dbo.Source使用数据填充表格,如屏幕截图#1所示.表dbo.Destination最初为空,将使用执行SQL任务填充源数据.
在SSIS包上,创建一个名为SQLServer的OLE DB连接,Connections Managers指向您首选的SQL Server实例.参见截图#2.
在SSIS包上,创建一个名为RecordDate的变量,如屏幕截图#3所示.
在SSIS包上,放置一个Execute SQL Task如屏幕截图#4所示.配置任务,如屏幕截图#5和#6所示.
屏幕截图#7显示了示例包执行.
屏幕截图#8显示了表中dbo.Source和dbo.Destination包执行后的数据.
希望有所帮助.
脚本: .
CREATE TABLE [dbo].[Destination](
[Id] [int] IDENTITY(1,1) NOT NULL,
[DateValue] [datetime] NOT NULL,
[ItemNumber] [varchar](50) NOT NULL,
[Qty] [int] NOT NULL,
CONSTRAINT [PK_Destination] PRIMARY KEY CLUSTERED ([Id] ASC)) ON [PRIMARY]
GO
CREATE TABLE [dbo].[Source](
[Id] [int] IDENTITY(1,1) NOT NULL,
[ItemNumber] [varchar](50) NOT NULL,
[Qty] [int] NOT NULL,
CONSTRAINT [PK_Source] PRIMARY KEY CLUSTERED ([Id] ASC)) ON [PRIMARY]
GO
Run Code Online (Sandbox Code Playgroud)
截图#1:

截图#2:

截图#3:

截图#4:

截图#5:

截图#6:

截图#7:

截图#8:

| 归档时间: |
|
| 查看次数: |
22709 次 |
| 最近记录: |