以下代码用于在文本文件中写入数字,而是将“Echo is ON”写入文本文件。
SET @CMD = 'ECHO '+@Ver+'>'+@Vercheck
Print @CMD
EXEC xp_cmdshell @CMD
,NO_OUTPUT
Run Code Online (Sandbox Code Playgroud)
打印@CMD 给出“ECHO 1>C:\Pharmsuite\Vercheck.txt”
这里查询写的是“Echo is ON”而不是 1。
我有一个表格[order],其中一个简单的选择以一种奇怪的方式显示了估计行数和实际行数之间的主要差异。
在这种情况下,一般估计行数与实际行数相比偏斜,这完全具有讽刺意味。此外,“执行次数”为 1。
询问 :
SELECT
ord.paymentmode AS [HowTheyPaid],
ord.id AS [OrderId],
ord.ISBackEndSystemMigrated,
ord.ISDuplicate,
ord.ISMerged
FROM
DedicatedDentalPlans_Stage.dbo.[order] ord
WHERE
ISBackEndSystemMigrated=0
AND ISDuplicate = 1
Run Code Online (Sandbox Code Playgroud)
桌子
USE [DedicatedDentalPlans_Stage]
GO
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[DF_Order_ISBackEnd]') AND type = 'D')
BEGIN
ALTER TABLE [dbo].[Order] DROP CONSTRAINT [DF_Order_ISBackEnd]
END
GO
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[DF__Order__ISDuplica__382F5661]') AND type = 'D')
BEGIN
ALTER TABLE [dbo].[Order] DROP CONSTRAINT [DF__Order__ISDuplica__382F5661]
END
GO
IF EXISTS (SELECT * …Run Code Online (Sandbox Code Playgroud) 我有一个联系人(ID、名字、姓氏、中间名)。
例如:
| ID | FirstName | LastName | MiddleName |
|====|===========|==========|============|
| 1 | Mark |Jordan | E |
|----|-----------|----------|------------|
| 2 | James | Blunt | NULL |
|----|-----------|----------|------------|
Run Code Online (Sandbox Code Playgroud)
我要输出
Mark E. Jordan
James Blunt
Run Code Online (Sandbox Code Playgroud)
因此,如果 MiddleName 不为空,则添加一个 '.' 之后,否则输出空值。
我知道isnull函数,但是我需要的是isnotnull函数。如何完成查询?
到目前为止我的查询:
select FirstName + ' ' + isnull(...) + LastName
from Contact
Run Code Online (Sandbox Code Playgroud) 我很确定我想要的当前实现是不可能的,sys.databases 目录视图在服务级别范围内可以了解其他 SQL Server 实例 (lol)。但我认为很多事情用电脑是不可能的,所以希望我能用不同的方式解决我的问题。
我已经创建了一个 PowerShell 解决方案,该解决方案使用 SMO 来备份所有实例上的所有数据库,但是由于安全原因,我无法在不将运行代理作业的代理帐户设为本地管理员的情况下使该解决方案工作服务器。
作为替代方案,我编写了一个 T-SQL 脚本,该脚本将作为代理作业运行,并每 15 分钟对 SQL Server 实例中的所有数据库进行完整、差异或事务备份。
DECLARE @sql nvarchar(MAX) = N'';
--Check time for full backup
IF (DATENAME(weekday,getdate()) = 'Sunday' AND convert(time,getdate()) > '00:00' and convert(time,getdate()) < '00:15')
BEGIN
SELECT @sql += 'BACKUP DATABASE ' + QUOTENAME(name)
+ ' TO DISK = N''C:\backups\' + @@ServiceName + '_' + name + '__'
+ cast(year(getdate()) as nvarchar(4)) + '_' + cast(month(getdate()) as nvarchar(2)) + '_' + cast(day(getdate()) as nvarchar(2)) …Run Code Online (Sandbox Code Playgroud) 我知道这是您可以在本网站上找到的最简单的问题,但我无法在互联网上找到答案。
如何检查触发器是否由INSERT或触发DELETE?
CREATE TRIGGER [dbo].[TestTrigger]
On [dbo].[Table1]
AFTER INSERT, DELETE
AS
--if save
--do some work
--else if delete
--do some work other work
Run Code Online (Sandbox Code Playgroud)
如果是insert,我想做一些工作,如果是delete ,我想做一些其他工作。
请提供相同的代码片段。
我想从 SQL Server 数据库中混淆(打乱)敏感数据,但方式将提供:
例子:
Abc -> zyx (lenght: 3)
StackOverflow -> a65vr4doqjd (lenght: 11)
Run Code Online (Sandbox Code Playgroud)
通常我会避免“自制”算法,所以你知道一些可以提供这种混淆的 MS 内置解决方案吗?
我希望我清楚地表达了我的问题,否则让我知道,我会尝试根据需要添加尽可能多的信息。
我有表 B 和表 A。表 B 包含我需要提取的日期记录。但是,我只想在以下情况下拉动它们:
诀窍是我没有钥匙可以加入表格。所以,我使用 Item 列和 date 列来加入。(注意两个项目可以有相同的日期。也可以有多个相同的项目,但日期也不同。)
所以表 B 可能有:
[Item] [Qty] [Date]
F-001100, 400 7/14/2016
F-002200, 750 7/28/2016
F-000767, 1000 7/28/2016
F-006006, 300 8/01/2016
F-002200, 900 7/30/2016
Run Code Online (Sandbox Code Playgroud)
表A可能有:
[Item] [Status] [Qty] [Date0] [Date2] [Date3] [Date4]
F-001100, 1, 400 7/14/2016 7/15/2016 7/16/2016 7/17/2016
F-002200, 0, 750 7/28/2016 7/29/2016 7/30/2016 7/31/2016
Run Code Online (Sandbox Code Playgroud)
所以结果集应该是:
[Item] [Qty] [Date]
F-002200, 750 7/28/2016
F-000767, 1000 7/28/2016
F-006006, 300 8/01/2016
F-002200, 900 7/30/2016 …Run Code Online (Sandbox Code Playgroud) 考虑 Microsoft SQL Server 2012 中的以下代码:
INSERT INTO [dbo].Production
SELECT [field1]
,[field2]
,cast([datefield] as datetime)
FROM [RAW].Staging
Run Code Online (Sandbox Code Playgroud)
临时表加载了来自 CSV 文件的数据。因此,在某些情况下,我们最终会得到空字段,而不是 NULL 字段。因此,日期字段在插入生产表时会转换为 1900-01-01 日期。
我想知道在上面的插入代码中是否有什么我可以做的,以确保当来自临时表的字段为 NULL 或为空时,日期字段设置为 NULL。
我将值从 SQL Azure 中的临时表插入到生产表中。临时表中的值是 varchar,而生产表中的目标值是 tinyint(它是人类的年龄字段,所以我认为最多 255 就足够了;))
问题是由于源系统中的错误,我们倾向于将一些值设为 -1 或 -2,而它们应该是 0。这会导致问题,因为 TINYINT 仅支持 0 到 255 的值(也因为这实际上是错误的)。我想知道是否有某种 case 语句可以用来将值转换为 0,如果它们低于 0,或者如果它们落在 0-255 范围之外?
在SQL Server 2008 R2我有一个名为的主表Employees,其中包含大约 20 个字段。我有第二个电子表格,其中包含除 5 之外的所有字段UpdateToEmployees,我需要合并这些字段,Employees但仅在值不相同的地方。
执行此操作的最有效方法是什么?我的思考过程(可能很长)是:
Select语句以获取值不相同的行exists,用是/否值标记一个字段exists包含 yes 值 - 运行更新查询exists包含值 - 运行插入查询使用下面的 DDL - 我如何加入 empID 并更新记录 where when matched= Yes 或 True(无论它返回的是什么)并插入当前不存在的记录Employees
Create Table Employees
(
empid varchar(50)
,empaddress varchar(500)
,phone varchar(12)
,emcontact1 varchar(500)
,emcontact2 varchar(500)
,active varchar(10)
,manager varchar(50)
,paygrade int
)
Insert Into Employees (empid,empaddress,phone,emcontact1, emcontact2, active, manager, paygrade) VALUES …Run Code Online (Sandbox Code Playgroud) t-sql ×10
sql-server ×9
cast ×2
backup ×1
data-masking ×1
datetime ×1
functions ×1
index ×1
insert ×1
instance ×1
merge ×1
null ×1
performance ×1
security ×1
smo ×1
trigger ×1
xp-cmdshell ×1