如何使用存储过程从另一台服务器运行作业?
让我们说
这是我如何使这项工作失去的部分?
xp_cmdshell + osql command -U: -P: + sp_startjob
Run Code Online (Sandbox Code Playgroud) 有没有什么好方法可以避免isnull()在存储过程中多次编写函数?
我有一个使用该isnull()函数近 30 次的存储过程,我认为我缺少一个概念,但是在找到更好的方法来获取我的数据之前,我会喜欢从这么多isnull()函数中清理我的代码。
我可以暂时将 SQL Server 2008 R2 设置为使用空值作为浮点 0 吗?isnull()如果没有数据,我的大部分内容只是添加零 0 值,以便我可以进行数学运算。
编辑:我不是懒惰,我只是想清理我的代码并避免选择部分看起来像这样
select
vrsta.NAZIV
,isnull(sum(prod.prod_mpci),0) as prod_MPCI
,isnull(sum(isnull(mal_MPCI,0) + (vel_kol * isnull(mal_MPC,vel_VPC))),0) as lager_mpci
,isnull(sum(vel_NCI),0)+isnulL(sum(mal_NCI),0) as lager_nci
,sum( case
when isnull(vel_KOL,0)+isnull(mal_KOL,0) > isnull(prod.prod_kol,0) and isnull(dzn.dzn,'2010-01-01') < @dzu
then ((isnull(vel_KOL,0)+isnull(mal_KOL,0))-isnull(prod.prod_kol,0)) * isnull(mal_MPC,vel_VPC)
else 0 end
) as visak_MPC
,sum( case
when isnull(vel_KOL,0)+isnull(mal_KOL,0) > isnull(prod.prod_kol,0) and isnull(dzn.dzn,'2010-01-01') < @dzu
then ((isnull(vel_KOL,0)+isnull(mal_KOL,0))-isnull(prod.prod_kol,0)) * isnull(mal_NC,vel_NC)
else 0 end
) as visak_MPC
,sum( case …Run Code Online (Sandbox Code Playgroud) 在 SQL 2008 R2 中,我将更新一个将影响 2500 万行的表,该表当前正在复制(事务复制)。为了最大限度地减少对复制的影响,我可以创建一个存储过程,将更新语句包装在存储过程中并为复制添加这个存储过程吗?
通过在执行存储过程时执行此操作,它将复制存储过程的执行。我的问题是 SQL Server 如何知道只复制存储的 proc 执行(即实际的 exec myupateproc t-sql 命令)而不是在发布者上更新的底层表数据(即实际复制 2500 万条更新语句)?

我试图找到一种能够像使用 Access 那样物理保存和打开 SQL Server 数据库的有效方法。我希望能够将我的整个数据库保存到一个文件中并在其他服务器上打开它。我已经尝试过备份/恢复,但它们非常棘手,而且它并不总是有效。除了备份/恢复程序之外,还有其他方法吗?
以下是我尝试进行还原时得到的结果。我尝试了我能想到的所有可能的方法,但它根本无法恢复。
我是 Microsoft SQL Server 2008r2 的 DBA。由于试镜,我需要向没有明确 IT 背景的人提供我的数据库的数据结构。我猜他们会喜欢传统的格式,表格是矩形,字段列在里面,它们之间的箭头代表外键。这是 Microsoft 开箱即用的东西吗?
我正在使用 SQL Server 2012。我正在使用 CTE 从项目表中创建一个订单表。订单表的最终计数约为 1.2 亿。整个过程大约需要2个小时。
对表进行分区是否有助于减少完成时间?
如果是这样,我可以按订单年份对空表进行分区,然后从 CTE 插入到订单表中吗?或者我是否需要在 items 表上创建一个分区,因为 CTE 是从 items 表中汇总的?
此外,我估计的行数与实际行数有很大不同。
我现在在一个项目上工作了很长时间。它是一个与 SQL Server 数据库(.mdf、LINQ to SQL)配合使用的 .NET 应用程序。现在我快完成了,想运行一些测试。
但在这里我完全搞砸了。到目前为止,我的应用程序只在我自己的电脑上运行,.mdf 文件存储在本地。我实际计划的是一个应用程序,它连接到存储在来自不同机器的网络路径上的数据库。
现在我读到这在 SQL Server 数据库中是不可能的?!我也收到消息:
文件 xxx.mdf 位于数据库文件不支持的网络路径上。
任何人都可以想出一个选项,如何在不重新编程整个数据库的情况下解决这个问题?
我首先想到的一个可能的明显绝望的解决方案是:
如果我的问题没有其他解决方案,我的解决方案是否有效?如果可以,避免并发更新的可能性有多大?
请帮助并提前致谢!
删除重复行时,使用本教程中的以下查询,我将如何强制删除找到的哪些重复行?
DELETE FROM dbo.ATTENDANCE
WHERE AUTOID NOT IN (SELECT MIN(AUTOID) _
FROM dbo.ATTENDANCE
GROUP BY EMPLOYEE_ID,ATTENDANCE_DATE)
Run Code Online (Sandbox Code Playgroud)
这很好用。我使用这个的原因是因为唯一可用的唯一 ID 是IDENTITY列中的一个。为了确定是否有重复的行,我必须查看多列的组合。
但是,如果我有一组重复的行,我/SQL Server 如何决定删除哪些行?我将如何强制它删除除最高IDENTITY值之外的所有内容?
EMPLOYEE_ID ATTENDANCE_DATE AUTOID
A001 2011-01-01 1
A001 2011-01-01 2
Run Code Online (Sandbox Code Playgroud)
如果我现在运行查询,它恰好删除了第二个,有AUTOID2 个。但我试图删除除这个之外的所有内容(因为这是最新添加的)。
在探索新功能时,FORMAT我遇到了以下问题,想知道是否有其他人遇到过类似的问题并找到了解决方案,或者它是否是一个错误?
SELECT FORMAT(GETDATE(),'mm/dd/yyyy','en-US');
SELECT GETDATE();
Run Code Online (Sandbox Code Playgroud)
输出:
我有一个PROD和NON-PROD系统
NON-PROD 已经拥有应用程序 PROD 数据库的副本
我还在NON-PROD应用程序数据库上创建了新的存储过程并对一些旧的进行了更改
如果我要对PROD应用程序数据库进行全新备份,并在NON-PROD服务器上恢复它,是否会:
删除我在非生产应用程序数据库上创建的新存储过程?
删除对与 PROD 应用程序数据库同名的存储过程(NON-PROD 应用程序数据库)所做的更改,并将它们替换为来自 PROD 应用程序数据库的原始存储过程?