小编AHi*_*ins的帖子

将数据从SAP导出到SQL Server

我有一个应用程序,它使用SQL Server 2008来存储需要从SAP提供大量财务信息的数据(在该公司中使用Oracle 11作为后端).

我要求SAP人员阅读表格,他们说没办法.我让他们直接连接到我的数据库来填充我的表,他们说没办法.(我有来自Oracle数据库的提要,其他应用程序与SAP不同,使用透明网关没有问题,所以这就是为什么问这个)

他们说与SAP交互的唯一方法是使用Web服务.但由于数据量巨大,我认为这不是道路.

有没有人在SAP和SQL Server之间创建接口的经验?

我要扩展我的解释.我当前的应用程序已经由其他三个应用程序(这是一个大型企业)提供,所有应用程序都会转到我收到数据以进一步处理的相同表.所有其他应用程序(1个Oracle,2个SQL Server)执行直接更新或保存数据的存储过程.其他3个应用程序由不同的团队管理,彼此无关.所有人都在开始时抱怨,但最后都接受了将他们的数据导出到这个应用程序.

因此,理想的情况是说服SAP人员这样做:打开与SQL Server的连接并执行一些插入或运行存储过程.

sql-server sap web-services

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

从TRY CATCH中的单个语句捕获多个错误消息

我在几个列和表上运行一批语句,并希望检索有关发生错误的信息.

该语句是类型更改(varchar到nvarchar),当它失败时,它似乎返回2个错误.

消息5074,级别16,状态1,行1对象'DF_XXX_YYY'取决于列'YYY'.

消息4922,级别16,状态9,行1 ALTER TABLE ALTER COLUMN描述失败,因为一个或多个对象访问此列.

但是,当我将它包装在一个TRY/CATCH块中并选择时ERROR_MESSAGE(),它只返回第二个错误:

ALTER TABLE ALTER COLUMN描述失败,因为一个或多个对象访问此列.

理想情况下,我会让它返回第一条消息,因为这提供了更多信息.

确切的SQL语句是:

begin try
    alter table XXX
    alter column YYY
    nvarchar(200)
end try
begin catch
    select ERROR_MESSAGE(), ERROR_LINE(), ERROR_NUMBER(), ERROR_PROCEDURE(), ERROR_SEVERITY(), ERROR_STATE()
end catch
Run Code Online (Sandbox Code Playgroud)

有谁知道如何检索更多信息?(@@ERROR也返回第二个错误)

sql t-sql try-catch sql-server-2008

12
推荐指数
2
解决办法
6216
查看次数

基于另一个计算列的计算列?

我有一个叫做Cost返回钱的计算列.

我想要另一个返回(Cost * 2)的列,但它不允许我.

sql-server-2005 calculated-columns

11
推荐指数
2
解决办法
7221
查看次数

错误:对于完整结果集和XML结果,必须将结果绑定名称设置为零

我只有一行从sql query(count(*))返回,但在执行包时,它显示上面的错误,包失败.

我将结果类型设置为"单行",并将query(select count(*) as 'result' from abc.tbl_nm)的输出映射到Int32类型的变量.

ssis ssis-2008

11
推荐指数
1
解决办法
2万
查看次数

错误 - ORA-22835:缓冲区太小,无法进行CLOB到CHAR或BLOB到RAW的转换

我试图读取blob消息并在我的一个过程中将其显示为变量,但我收到以下错误:

错误 - ORA-22835:缓冲区对于CLOB到CHAR或BLOB到RAW的转换太小(实际:9923,最大值:2000)

我用google搜索并找到了修改blob消息的建议,如下所示,但宁愿将完整的blob消息显示为字符串.

UTL_RAW.CAST_TO_VARCHAR2(dbms_lob.substr(variable_name,2000,1)) 
Run Code Online (Sandbox Code Playgroud)

如何显示完整的消息?我可以更改数据库或过程级别的设置吗?

sql oracle stored-procedures blob clob

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

为什么在现有列中添加可为空的默认约束需要这么长时间?

我有一个大约有4亿行的现有表.该表包含一组bit名为IsModified,IsDeleted和IsExpired 的列.

CREATE TABLE [dbo].[ActivityAccumulator](
    [ActivityAccumulator_SK] [int] IDENTITY(1,1) NOT NULL,
    [ActivityAccumulatorPK1] [int] NULL,
    [UserPK1] [int] NULL,
    [Data] [varchar](510) NULL,
    [CoursePK1] [int] NULL,
    [TimeStamp] [datetime] NULL,
    [SessionID] [int] NULL,
    [Status] [varchar](50) NULL,
    [EventType] [varchar](40) NULL,
    [DWCreated] [datetime] NULL,
    [DWModified] [datetime] NULL,
    [IsModified] [bit] NULL,
    [DWDeleted] [datetime] NULL,
    [IsDeleted] [bit] NULL,
    [ActivityAccumulatorKey] [bigint] NULL,
    [ContentPK1] [bigint] NULL
) ON [PRIMARY]
Run Code Online (Sandbox Code Playgroud)

我想在表中添加一个默认约束,对于所有将来插入的行,将默认那些位列为0.我试图通过以下命令执行此操作:

ALTER TABLE ActivityAccumulator 
ADD CONSTRAINT DF_ActivityAccumulatorIsExpired DEFAULT (0) FOR IsExpired

ALTER TABLE ActivityAccumulator 
ADD CONSTRAINT DF_ActivityAccumulatorIsDeleted DEFAULT (0) FOR …
Run Code Online (Sandbox Code Playgroud)

sql default-constraint sql-server-2012

10
推荐指数
1
解决办法
862
查看次数

将列从Date转换为Datetime Sql Server

我有一个名为的列Lastmodified,数据类型为Date,但应该是DateTime.

是否有任何转换列的方法?

当我使用SQL Server Management Studio的"设计"功能时,我收到以下错误:

不允许保存更改.您所做的更改需要删除并重新创建下表.

我真的不想删除表,我只是想知道是否可以将列转换DateDatetime或者是否必须删除列并创建具有正确数据类型的新列?

sql sql-server ssms

9
推荐指数
2
解决办法
3万
查看次数

SSIS连接管理器登录失败

我有一个SSIS项目,其中我定义了一个数据源(提供程序:用于SQL Server的本机OLE DB/Microsoft OLE DB提供程序).当我手动打开它并按下"测试连接"按钮时,一切正常.连接管理器可以使用连接字符串,用户和密码访问数据库.

现在我有一个SSIS包,我根据这个数据源创建了一个连接管理器("来自数据源的新连接......").

在包控制流程中,我有一个SQL任务,它具有连接类型OLE DB,并且在此包中将连接设置为我的连接管理器.该任务向数据库发出一些更新语句,完全没有意义.

现在,当我调试整个事情时,我总是得到同样的错误:

错误:SSIS错误代码DTS_E_OLEDBERROR.发生OLE DB错误.错误代码:0x80040E4D.OLE DB记录可用.来源:"用于SQL Server的Microsoft OLE DB提供程序"Hresult:0x80040E4D描述:"用户'myUser'登录失败."

仅供参考:myUser等于我的数据库用户名.

所以我的问题是:我在这里缺少什么?我真的看不出这里有什么问题.我真的被困在这里了.任何提示非常感谢!

database ssis

9
推荐指数
1
解决办法
4万
查看次数

SSIS错误 - 程序包中的版本号无效

与失败作业对应的日志如下:

04/11/2014 06:40:00,LPR_New,错误,0,USPHND0088,LPR_New,(工作结果),,工作失败.工作由附表14(LPR_New_Job)调用.最后一步是第1步(上传材料).,00:00:00,0,0 ,,,, 0

04/11/2014 06:40:00,LPR_New,错误,1,USPHND0088,LPR_New,上传材料,执行用户:nestle\ussqldbserver.... 00.5324.00 for 32-bit版权所有(C)Microsoft Corp 1984-2005.版权所有.
开始时间:上午6:40:00错误:2014-04-11 06:40:00.39代码:0xC001700A来源:说明:包中的版本号无效.版本号不能大于当前版本号.结束错误错误:2014-04-11 06:40:00.39
代码:0xC0016020源:说明:从版本3到版本2的程序包迁移失败,错误0xC001700A"程序包中的版本号无效.版本号不能更大比当前的版本号." 结束错误错误:2014-04-11 06:40:00.39代码:0xC0010018源:描述:从节点"DTS:Property"加载值"3"时出错.结束错误无法加载包"\ usphnd0088\dataxfer\LPR\LPR New\UploadMaterial.dtsx",因为...处理退出代码5.步骤失败.,00:00:00,0,0 ,,,, 0

ssis

9
推荐指数
3
解决办法
5万
查看次数

DTS_E_OLEDBERROR.错误代码:0x80004005.SQl Native客户端和sql server的oledb提供程序之间的差异

我在SSIS数据流组件中使用SQL Server Native Client 10时出现通信链接错误.

错误:SSIS错误代码DTS_E_OLEDBERROR.发生OLE DB错误.错误代码:0x80004005.OLE DB记录可用.来源:"Microsoft SQL Server Native Client 10.0"Hresult:0x80004005说明:"通信链接失败".OLE DB记录可用.来源:"Microsoft SQL Server Native Client 10.0"Hresult:0x80004005说明:"TCP提供程序:指定的网络名称不再可用.

所以我从SQL Server Native Client 10更改为Microsoft OLEDB Provider for SQL Server,希望它能正常运行.这次出现了错误,如下所示:

[Transacn_Tbl1 [737]]错误:SSIS错误代码DTS_E_OLEDBERROR.发生OLE DB错误.错误代码:0x80004005.OLE DB记录可用.来源:"用于SQL Server的Microsoft OLE DB提供程序"Hresult:0x80004005说明:"SQL Server上发生了未指定的错误.连接可能已被服务器终止."

[Transacn_Tbl1 [737]]错误:SSIS错误代码DTS_E_INDUCEDTRANSFORMFAILUREONERROR."输入"OLE DB目标输入"(750)"失败,因为发生错误代码0xC020907B,并且"输入"OLE DB目标输入"(750)"上的错误行处置指定错误失败.指定组件的指定对象发生错误.在此之前可能会发布错误消息,其中包含有关失败的更多信息.

这两个提供商有什么区别?我应该使用哪一个?

sql-server oledb ssis dts

8
推荐指数
1
解决办法
7万
查看次数