我正在尝试通过导入/导出向导从生产数据库中播种一个空白数据库。如何说服 SQL Server 忽略外键违规?
谢谢
我想将记录插入TempTable.像这样的东西:
insert into ##tempT
SELECT * FROM MyTable
Run Code Online (Sandbox Code Playgroud)
MyTable包含大量记录,因此"插入"需要很长时间.
如果我尝试运行:
SELECT COUNT(*) FROM ##tempT
Run Code Online (Sandbox Code Playgroud)
它返回始终为"0",直到INSERT INTO命令插入"MyTable"的所有记录.
如何获得一个进度计数,告诉我## tempT中有多少记录?
我需要在SQL命令运行时更新进度条值.
谢谢.
我在Oracle上有一个程序,如果我使用这段代码从SQL Developer调用它,它就可以正常工作:
VARIABLE x REFCURSOR
exec MY_PROCEDURE('par1', 'par2', 'par3', 'par4' ,:x);
PRINT x;
Run Code Online (Sandbox Code Playgroud)
如果我尝试从我的.Net应用程序(使用ODP.NET)调用它,我收到错误:
Oracle.DataAccess.Client.OracleException ORA-08103: object no longer exists
Run Code Online (Sandbox Code Playgroud)
这是我用来调用它的代码:
OracleConnection con = new OracleConnection();
con.ConnectionString = dbConnectionString; //string with the connectio. It is fine because I can connect
OracleCommand cmd = new OracleCommand("MY_PROCEDURE", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Connection = con;
cmd.Parameters.Add(new OracleParameter("par1", OracleDbType.Varchar2)).Value = var1;
cmd.Parameters.Add(new OracleParameter("par2", OracleDbType.Varchar2)).Value = var2;
cmd.Parameters.Add(new OracleParameter("par3", OracleDbType.Varchar2)).Value = var3;
cmd.Parameters.Add(new OracleParameter("par4", OracleDbType.Varchar2)).Value = var4;
OracleParameter ref_cursor = new OracleParameter();
ref_cursor.OracleDbType = OracleDbType.RefCursor; …Run Code Online (Sandbox Code Playgroud) 我有一个带有USE DATABASE声明的脚本。如果数据库存在,脚本运行得很好。如果它不存在,它会失败并显示“数据库不存在”的消息,这是完全有道理的。
现在,我不会失败,所以我添加了一个检查来选择 sys.databases 上是否存在 DB(IF 1=2为了简单起见,我将在此处用检查表示),因此,如果 DB 存在 (1=1 ),然后运行“use”语句。
令我惊讶的是,脚本一直失败。所以我尝试添加一个 TRY CATCH 块。结果一样。似乎 use 语句在其他任何事情之前进行评估,这很烦人,因为现在我的脚本可能会中断。
所以我的问题是:我怎样才能use对可能不存在的数据库的脚本进行声明?
BEGIN TRY
IF (1=1) BEGIN --if DB exists
USE DB_THAT_MAY_NOT_EXIST
END
END TRY
BEGIN CATCH
END CATCH
Run Code Online (Sandbox Code Playgroud) 快速提问,为什么 R 舍入我的“a”值?
> a<--2267046163.857410
> a
[1] -2267046164
> b<- 0.00050025
> b
[1] 0.00050025
Run Code Online (Sandbox Code Playgroud)
“b”看起来不错,但 a 被四舍五入,这给我带来了问题,因为我将 a 乘以 b 并得到
> a*b
[1] -1134090
Run Code Online (Sandbox Code Playgroud)
我期望得到 -1134089.843
谢谢
如何告诉LAG函数获取最后一个"非空"值?
例如,请参阅下面的表格,我在列B和C上有一些NULL值.我想用最后一个非空值填充空值.我试图通过使用LAG函数来做到这一点,如下所示:
case when B is null then lag (B) over (order by idx) else B end as B,
Run Code Online (Sandbox Code Playgroud)
但是当我连续有两个或多个空值时,这并不常用(参见C列第3行的NULL值 - 我希望它是原始的0.50).
任何想法我怎么能实现这一目标?(它不必使用LAG功能,欢迎任何其他想法)
一些假设:
谢谢
我有一个名为 MyFactTable 的表,如下所示:
Create table MyFactTable
(
RunID int,
Key2 int,
Key3 int,
Key4 int,
….
Value2 numeric,
Value3 numeric,
Value4 numeric,
….
)
Run Code Online (Sandbox Code Playgroud)
它也有:
运行 ID 彼此完全隔离,通常我会将多个进程插入到此表中(显然具有不同的运行 ID)。问题是我似乎无法并行运行插入,这意味着当进程 A 插入表时,进程 B 也被阻止这样做。
在 95% 的情况下,这不是什么大问题,因为大多数 RunID 非常小(少于 50 万行),它们只会锁定表几秒钟,但最终会产生更大的工作(20+ 百万行) ) 启动并锁定表几分钟,阻止所有较小的进程完成。
我想这是因为第一个尝试插入表的进程正在获取一个表锁,所以我用这个命令禁用了锁升级:
ALTER TABLE MyFactTable SET (LOCK_ESCALATION=DISABLE)
Run Code Online (Sandbox Code Playgroud)
那确实解决了问题,但现在我想知道这样做的后果是什么。
有没有人遇到过这样的情况并愿意分享他们的经验。
其次,我可以采用哪些其他可能的解决方案?我想过对表进行分区并将所有小运行放在一个分区中,将所有大运行放在另一个分区中(我不在乎大的是否阻塞自己,我只是想确保小的不会被大的)。你怎么看?
我想值得一提的是,这个表永远不会更新,一旦插入了 RunID,它只会被查询(因此不会再插入具有相同 RunID 的内容),最终它会被清理过程删除。
谢谢,迭戈
我试图在我的Windows 10笔记本电脑上安装带有GPU的tensorflow.我已经下载了cuda(版本9,因为它是最新的版本)并且因为dll cudart64_80.dll不存在而有问题.我确实cudart64_90.dll让我相信张量流只适用于cuda 8.
我想知道我是否应该unisntall CUDA 9然后安装CUDA 8或者我是否可以安装两个版本?
你知道什么时候你有这么大的日志表,你只需要查看最后的X行,知道当时发生了什么?
通常你可以这样做:
select top 100 *
from log_table
order by ID desc
Run Code Online (Sandbox Code Playgroud)
显示100个最新记录,但它将按逆序(当然,因为DESC的顺序),例如:
100010
100009
100008
and so on..
Run Code Online (Sandbox Code Playgroud)
但为了简单起见,我希望看到他们发生的订单记录.我可以通过运行此查询来做到这一点:
select *
from(
select top 100 * from log_table order by ID desc
) a
order by a.id
Run Code Online (Sandbox Code Playgroud)
我通过ID desc得到我的前100个订单,然后反转结果集.它工作但似乎没有必要运行2选择产生这个结果.
我的问题是:有没有人有更好的想法呢?就像桌子末尾的精选顶部一样?
编辑:两个查询的执行计划:似乎亚历克斯的想法非常好,但大卫也是对的,只有一个选择和一种

EDIT2:设置统计IO ON:
(10 row(s) affected)
Table 'sysdtslog90'. Scan count 1, logical reads 3, physical reads 0, read-ahead reads 0, lob logical reads 12, lob physical reads 0, lob read-ahead reads 0.
(1 row(s) affected)
(10 row(s) affected)
Table …Run Code Online (Sandbox Code Playgroud) 假设我有一个包含A,B和C列的data.table
我想写一个应用过滤器的函数(例如A> 1)但是"A"需要是动态的(函数的参数)所以如果我通知A,它会做A> 1; 如果我通知B,它会B> 1,依此类推......(A和B总是列名称,当然)
示例:假设我的数据如下,我想做"A == 1"并返回绿线,或执行"B == 1&C == 1"并返回蓝线.

可以这样做吗?谢谢
sql ×6
sql-server ×5
t-sql ×3
r ×2
c# ×1
data.table ×1
dataframe ×1
insert ×1
locking ×1
odp.net ×1
oracle ×1
python ×1
ssis ×1
tensorflow ×1