小编Bre*_*een的帖子

SSIS - 由于潜在的数据丢失,无法转换该值

我对SSIS比较陌生.我正在尝试使用Microsoft OLEDB for Oracle从Oracle数据库中提取信息,我正在使用此查询:

SELECT ID FROM Test
Run Code Online (Sandbox Code Playgroud)

我收到一条错误消息:the value cannot be converted because of a potential loss of data.如果我将查询更改为以下,则它可以正常工作:

SELECT '1' FROM Test
Run Code Online (Sandbox Code Playgroud)

我认为它失败了,因为ID不是整数.但是,平面文件连接管理器显示OutputColumnWidth是50.我做错了什么?

格林尼治标准时间16:30更新
我已经对此进行了更多调查,看起来是列有"频率"或"无"的直方图导致问题的列.直方图"高度平衡"的那些似乎没问题.

sql-server oracle ssis etl

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

如何不小心删除表中的所有行

有人想要解释一下这个问题的机制...这个查询解析器的小怪癖几乎对我造成了重大损害.

创建一个包含100行的测试表,其中包含1-100.

create table test( JobID int primary key);

;with numbers as (
    select 1 as n
    union all
    select n + 1 as n 
    from numbers
    where n < 100
)
insert into test
select n from numbers
Run Code Online (Sandbox Code Playgroud)

创建一个包含整数1-50的临时表:

select jobid as number into #deletions
from test 
where jobid <= 50
Run Code Online (Sandbox Code Playgroud)

现在使用IN子句进行删除,但内部查询中的列名错误:

delete from test where JobID in (select JobID from #deletions)
Run Code Online (Sandbox Code Playgroud)

从外观上看,最后一个删除语句给出了删除50行的外观......但是,没有JobID输入#deletions,所以它从外部查询中拉出来并最终以某种方式删除测试中的所有行.

我的问题是,它究竟是如何解释内部查询... #deletions只有50行,那么如何从外表中提取所有100个id?这种类型的错字/错误几乎对我今天造成了重大损害.

在我看来,这应该抛出某种解析/语法错误或某种歧义错误.

这是一个 SQL Fiddle Demo

sql sql-server

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

如何使用ruby中的键将ID数组转换为哈希数组?

我有一个数组,

array = [1,2,3]
Run Code Online (Sandbox Code Playgroud)

需要将其转换为:

newArray = [{id: 1}, {id: 2}, {id: 3}]
Run Code Online (Sandbox Code Playgroud)

我知道这一点,有什么有效的方法吗?

array.each { |id| newArray << { id: id } }
Run Code Online (Sandbox Code Playgroud)

ruby arrays hash

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

Thread.Abort()方法冻结

所以我用Google搜索它因为使用不安全的代码而冻结,并且AbortException仅在控制流返回托管代码时抛出.所以,在我的情况下,我有一个本机库,在一个线程中调用.所以有时我不能中止它,因为库是本机的,Abort方法不仅不做任何事,而是冻结调用线程.

所以,我想解决它.

例如,使用不同的过程应该有所帮助,但它非常复杂.

因此,一个不太重的解决方案是使用'AppDomains'.但无论如何我应该创建一个exe并调用它.我试着像这样在内存中生成它

var appDomain = AppDomain.CreateDomain("newDomain");
var assemblyBuilder = appDomain.DefineDynamicAssembly(new AssemblyName("myAsm"), AssemblyBuilderAccess.RunAndCollect);
var module = assemblyBuilder.DefineDynamicModule("myDynamicModule");
var type = module.DefineType("myStaticBulder", TypeAttributes.Public);
var methBuilder = type.DefineMethod("exec", MethodAttributes.Static | MethodAttributes.Public);
var ilGenerator = methBuilder.GetILGenerator();
Run Code Online (Sandbox Code Playgroud)

但我发现只有EMIT方式,它非常复杂.

是否存在肤浅的解决方案?

.net c# reflection multithreading appdomain

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

标签 统计

sql-server ×2

.net ×1

appdomain ×1

arrays ×1

c# ×1

etl ×1

hash ×1

multithreading ×1

oracle ×1

reflection ×1

ruby ×1

sql ×1

ssis ×1