我必须将usersToImport表中的用户导入userContact表中。usersToImport在一行中包含每个用户的电话和电子邮件信息,但userContact每行存储一种联系信息。
这是我目前的做法:http : //sqlfiddle.com/#!6/c9b2e/1(出于某种原因,它没有输出任何内容,但代码在 SSMS 中有效)。
有没有办法在不使用两个不同选择的情况下做到这一点?也许自加入usersToImport或以case某种方式使用。
目前在 SQL Server 2008/R2 上。我刚刚在这里读到“设置行数”在 2012 年发布的某些版本中已被弃用:http : //technet.microsoft.com/en-us/library/ms188774.aspx
我们有一些遗留代码可能使用它来删除小块数据并最大限度地减少我们每晚“数据清除”工作中的锁定。
如果没有行数,我将不得不使用“top xxx”来代替?
set rowcount 1000 /* Only delete this number of rows at a time */;
declare @short_time datetime2 = DATEADD(week,-1,SYSUTCDATETIME());
SET @TotalRowCount = 0
while ( select COUNT(1) from FlightAudit with (nolock) ) > @min_row_count
begin
delete FlightAudit where CreatedUTC < @short_time;
SET @SaveRowCount = @@ROWCOUNT
SET @TotalRowCount = @TotalRowCount + @SaveRowCount
if @SaveRowCount=0 break;
print 'delete from FuelerCertificationAudit...' + convert(varchar(10),@SaveRowCount) + ' Time=' + dbo.DateOrNullToChar(getdate())
end
print …Run Code Online (Sandbox Code Playgroud) 我有以下数据:
road | ID | other column | other column |
------------------+------+---------------+--------------+
MAIN ST | 1 | ... | ... |
MAIN ST | 2 | ... | ... |
MAIN ST | 3 | ... | ... |
BERRY LN | 4 | ... | ... |
BERRY LN | 5 | ... | ... |
BERRY LN | 6 | ... | ... |
JOHN RD | 7 | ... | ... |
JOHN RD | 8 | …Run Code Online (Sandbox Code Playgroud) 也许在某处有一个答案,但是,我在谷歌上找不到任何有效的答案,因此,我会在这里问这个。
我想动态地获取一些关于我的存储过程参数的信息,所以我写了这个脚本:
SELECT PARAMETER_NAME,
DATA_TYPE,
CHARACTER_MAXIMUM_LENGTH,
CHARACTER_OCTET_LENGTH
FROM INFORMATION_SCHEMA.PARAMETERS
WHERE SPECIFIC_NAME = @ProcName
Run Code Online (Sandbox Code Playgroud)
问题是 CHARACTER_MAXIMUM_LENGTH 和 CHARACTER_OCTET_LENGTH 之间的区别是什么。你能举个例子说明他们什么时候会有不同的结果吗?

提前致谢。
我的表数据是这样的:
ID Name salary date
1 a 100 1/08/2014
2 b 200 2/08/2014
.
.
.
.
26 z 2600 26/8/2014
Run Code Online (Sandbox Code Playgroud)
现在我只想返回周六或周日的行,例如:
ID Name salary date
2 ------------------------
3 -----------------------
9
10
16
17
23
24
30
31 -------------------------
Run Code Online (Sandbox Code Playgroud) 我有一张大致像这样的桌子。
(Pk int, Year int, Week1, Week2, .., Week53)
每个“周”列中的值是销售数据。我想要做的是从第一个表格中创建一个新表格 -
(PK int, WeekYear, SalesData)
其中“WeekYear”是年份和周数的串联,SalesData 是前一个表中相应字段的相同 salesdata。(只是想暂时取消选择)
SELECT pk,
[1],
[2],
...
[1000]
FROM (SELECT * FROM SalesTable) st
PIVOT
(
AGGREGATE(pk) -- no idea what to use here
FOR pk IN [1],
[2],
...
[1000]
);
Run Code Online (Sandbox Code Playgroud)
我目前的尝试毫无意义,因为我不确定要在我的数据集上应用哪个聚合函数。我在辨别创建新专栏 YearWeek 的最佳方式时也遇到了一些麻烦。
这似乎是PIVOT 的一个明显用途(我需要转置表格)。但是,我在思考如何正确完成它时遇到了很多麻烦。这样做的最佳方法是什么?
我有以下查询:
SELECT
[ID] AS [NewID]
, (
CASE WHEN LEN([MiddleName]) > 0 THEN
[LastName] + ', ' + [FirstName] + ' ' + LEFT([MiddleName],1) + '.'
ELSE
[LastName] + ', ' + [FirstName]
END
) AS [Name]
, [Title] AS [ProfTitle]
, CONVERT(CHAR(10),[DepartureDate],111) AS [BorDepart]
, [LocationOfficeNumber] AS [OfficePhone]
, [Location]
, [LocationSection] AS [Sec]
, [PracticeGroup] AS [PracticeTL]
, [Email]
FROM [dbo].[Borrowers]
Run Code Online (Sandbox Code Playgroud)
有了这个,我想知道如何编写一个转换为这个输出的 FOR XML 查询:
<sydney>
<import>
<template id="Borrower" name="Borrowers">
<record searchfield="NewID" searchvalue="NewID">
<field id="NewID">
<![CDATA[NEWID]]>
</field>
<field …Run Code Online (Sandbox Code Playgroud) 我和我的同事没有使用“远程桌面”连接到 SQL Server,而是使用 SQL Server Management Studio 将更改应用于远程服务器(每个用户都有自己的凭据)。
我们中的一个人对 SQL 表进行了一些更改,这使所有数据都处于危险之中。我很确定我们中的一个人是有罪的。我的问题是这个。我怎样才能证明这一点?是否有任何类型的查询来显示从客户端到远程 SQL Server 实例的所有过去的远程连接?也许有 IP 地址、计算机名称、凭据。
SQL Server Management Studio 是否有某种日志文件或任何查询来显示远程服务器登录?
PS 远程 SQL Server 实例上没有完整备份。日志很干净。
这是我们登录 SQL Server 的方式:

作为此问题的背景,可以在此链接中找到详细信息。
简而言之:除了RIGHT表之外,我有 2 个几乎相同的 SQL 语句。该LEFT JOIN是相同的,并且返回的列不同,因为该表是不同的。数据库从 2008 年移至 SQL Server 2012 实例。在 2012 实例上,1 个查询在 3 秒内执行,而另一个则需要将近 2 小时才能执行。执行计划有所不同,并发布在链接上。
但是,我可以接受这两个查询并在 SQL Server 2008 服务器上执行它们,它们都在 3 秒内完成。2008 服务器上的两个执行计划与 2012 服务器上的“良好”执行计划相同。
我有一个可以工作的新语句,但它所使用的应用程序是一个使用内联 SQL 的 C# windows 应用程序。我不想打破这个 1 语句的模式。任何人都可以阐明这个问题吗?
sql-server t-sql execution-plan sql-server-2008-r2 sql-server-2012
我需要一些帮助来创建触发器以在创建 qf.table 时运行 qf.stored_procedure。目前,我有一项工作是每 15 分钟运行一次存储过程,但不能进行更改。
这个想法是让触发器在表更新时运行存储过程,而不管它是单行还是全部。以及不确定是否在表下的触发器或数据库触发器中创建它?。我希望脚本检查触发器是否存在,如果不存在则创建它。
表名:qf.customer_working_hours
列:WHours_id,DayOFW
存储过程: qf.ServiveRefreshCustomer_WH
我是 SQL 脚本和 SQL 触发器的新手,任何帮助将不胜感激
sql-server ×10
t-sql ×10
audit ×1
duplication ×1
insert ×1
logs ×1
trigger ×1
unpivot ×1
xml ×1