我有一个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等于我的数据库用户名.
所以我的问题是:我在这里缺少什么?我真的看不出这里有什么问题.我真的被困在这里了.任何提示非常感谢!
给出以下测试矩阵:
testMatrix <- matrix( c(1,1,2,10,20,30,300,100,200,"A","B","C"), 3, 4)
colnames(testMatrix) <- c("GroupID", "ElementID", "Value", "Name")
Run Code Online (Sandbox Code Playgroud)
在这里,我想找到每组的最大值,然后返回该列的名称.例如,我希望1,A和2,C.如果与max有关系,那么第一场比赛就没问题了.之后,我将不得不使用新的列"GroupName"将其附加到矩阵
我怎样才能做到这一点?
我已经拥有Group,Max Value组合:
groupMax <- aggregate (as.numeric(testMatrix[,3]), by=list( testMatrix[,1] ), max )
Run Code Online (Sandbox Code Playgroud)
我用来向我的矩阵添加列的方式就像这样(让我们假设还有一个矩阵groupNames,GroupID,Name组合):
testMatrix <- cbind ( testMatrix, groupNames[match( testMatrix[,1], groupNames[,1] ), 2] )
Run Code Online (Sandbox Code Playgroud) 我有两个问题,根据我的理解,应该提供相同的结果,但事实并非如此.很明显,我在这里遗漏了一些重要的观点,我希望你能帮助我.
查询(我认为这是错误的):
SELECT SUM(a.amount) AS A_SUM ---10 727.470
FROM billdetail a
INNER JOIN bill c
ON (a.bill_id = c.bill_id)
INNER JOIN dates d
ON (c.date_id = d.date_id)
WHERE d.year = '2014'
AND c.status <> 'D'
AND a.status <> 'D';
Run Code Online (Sandbox Code Playgroud)查询:
SELECT SUM(C_SUM) ---10 754.279
FROM
(
SELECT SUM(a.amount) AS C_SUM
FROM billdetail a
INNER JOIN bill c
ON (a.bill_id = c.bill_id)
INNER JOIN dates d
ON (c.date_id = d.date_id)
WHERE d.year = '2014'
AND c.status <> 'D'
AND a.status <> …Run Code Online (Sandbox Code Playgroud)我们对一些表进行初始批量加载(源和目标都是 Oracle 11g)。过程如下:1.截断,2.删除索引(PK和唯一索引),3.批量插入,4.创建索引(又是PK和唯一索引)。现在我收到以下错误:
alter table TARGET_SCHEMA.MYBIGTABLE
add constraint PK_MYBIGTABLE primary key (MYBIGTABLE_PK)
ORA-01652: unable to extend temp segment by 128 in tablespace TEMP
Run Code Online (Sandbox Code Playgroud)
所以显然 TEMP 表空间对于 PK 创建来说太小了(仅供参考,该表有 6 列和大约 22 亿条记录)。所以我这样做了:
explain plan for
select line_1,line_2,line_3,line_4,line_5,line_6,count(*) as cnt
from SOURCE_SCHEMA.MYBIGTABLE
group by line_1,line_2,line_3,line_4,line_5,line_6;
select * from table( dbms_xplan.display );
/*
-----------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes |TempSpc| Cost (%CPU)| Time |
-----------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 2274M| 63G| | 16M (2)| …Run Code Online (Sandbox Code Playgroud) 我有一个DataFlow,其中有一个脚本组件作为源。
我已经根据需要定义了Output(OutputRows)和Column(MyOutputValue)。
当我想测试我的脚本时,即使使用硬编码值,也总是会遇到相同的错误:
System.NullReferenceException: Object reference not set to an instance of an object. at ScriptMain.CreateNewOutputRows().
我不知道这里出了什么问题。任何的想法?
这是我的代码:
using System;
using System.Data;
using System.Windows.Forms;
using System.Threading;
using System.Globalization;
using Microsoft.SqlServer.Dts.Pipeline.Wrapper;
using Microsoft.SqlServer.Dts.Runtime.Wrapper;
using Microsoft.SqlServer.Dts.Runtime;
using Excel = Microsoft.Office.Interop.Excel;
[Microsoft.SqlServer.Dts.Pipeline.SSISScriptComponentEntryPointAttribute]
public class ScriptMain : UserComponent
{
#region Members
String MyOutputValue;
#endregion
public override void PreExecute()
{
base.PreExecute();
MyOutputValue = "test";
CreateNewOutputRows();
}
public override void PostExecute()
{
base.PostExecute();
}
public override void CreateNewOutputRows()
{
OutputRowsBuffer.AddRow();
OutputRowsBuffer.MyOutputValue = MyOutputValue;
}
}
Run Code Online (Sandbox Code Playgroud)
在我的SSIS程序包中,我开始调试,然后得到以下屏幕(它是德语,因此针对该帖子,我将错误翻译为英语):
