我们已经开始将存储过程命名为[16_TestStoredProc]. 像这样命名存储过程有什么含义吗?
我不会解释我们为什么要这样做。这不是我有问题,而是会产生任何影响。
这是另一个查询优化器难题。
也许我只是高估了查询优化器,或者我遗漏了一些东西 - 所以我把它放在那里。
我有一张简单的桌子
CREATE TABLE [dbo].[MyEntities](
[Id] [uniqueidentifier] NOT NULL,
[Number] [int] NOT NULL,
CONSTRAINT [PK_dbo.MyEntities] PRIMARY KEY CLUSTERED ([Id])
)
CREATE NONCLUSTERED INDEX [IX_Number] ON [dbo].[MyEntities] ([Number])
Run Code Online (Sandbox Code Playgroud)
有一个索引和几千行,Number均匀分布在值 0、1 和 2 中。
现在这个查询:
SELECT * FROM
(SELECT
[Extent1].[Number] AS [Number],
CASE
WHEN (0 = [Extent1].[Number]) THEN 'one'
WHEN (1 = [Extent1].[Number]) THEN 'two'
WHEN (2 = [Extent1].[Number]) THEN 'three'
ELSE '?'
END AS [Name]
FROM [dbo].[MyEntities] AS [Extent1]
) P
WHERE P.Number = 0;
Run Code Online (Sandbox Code Playgroud)
是否 …
我想要一个检查约束,为多部分代码强制执行此正则表达式模式:
^\d{3}\.\d{3}\.\d{4}$
Run Code Online (Sandbox Code Playgroud)
...三个数字,一个句号,三个数字,一个句号,四个数字。
我是否需要创建一个 CLR 函数来强制执行模式匹配,并且可以在 DDL 中引用 CLR 函数吗?
有没有办法以另一种方式强制执行模式,使用LIKE?
我有一台运行 Windows 2012 R2 Datacenter 64 位的服务器。我使用 SQL 2016 RC3 没有问题,我想用我们从 MSDN 获得的 RTM 版本替换它。
卸载RC3然后安装RTM后,我无法远程连接到服务器。经过检查,我在配置管理器中看到“SQL Server 网络配置”没有节点。列出了 32 位版本,并启用了 TCP/IP。如何安装这个缺失的节点?
我已启动 SQL Browser 服务并尝试修复 2016 安装。似乎没有什么可以恢复这个缺失的组件。

我发现有趣的是,我无法卸载 RC3 和 RTM 安装的某些部分。我不确定这是否相关。我按照微软关于卸载 SQL Server 的说明进行操作,所以我觉得我做的一切都是正确的。

sql-server installation sql-server-2016 configuration-manager
我有一个表,其中有一NTEXT列名为comments. 我有第二个字符串,我们称之为anothercomment(a varchar),它需要放在comments单词 之后的给定字符串中UPDATEHERE。
强制转换会nvarchar(max)截断comments字符串,因此我不能使用CHARINDEX()( Msg 8152, Level 16, State 10, Line 2
String or binary data would be truncated.)。我曾经datalength()检查过是否有几千列 > 8000 个字符。
我想要实现的示例(尽管字符串更长):
注释 -
This is a test UPDATEHERE This is the end of the test另一个评论——
. This is inserted.结果字符串 -
This is a test UPDATEHERE. This is inserted. This is the end of the test …
SELECT 语句返回几行:
SELECT
ColA
FROM
TableA
WHERE
ColA IS NULL
Run Code Online (Sandbox Code Playgroud)
我在 TableA 中得到 47 行的 ColA 为“NULL”。
ColA
NULL
NULL
NULL
etc...
Run Code Online (Sandbox Code Playgroud)
如果我向这个查询添加一个聚合:
SELECT
ColA,
COUNT(ColA) AS theCount
FROM
TableA
WHERE
ColA IS NULL
GROUP BY ColA
Run Code Online (Sandbox Code Playgroud)
我得到
ColA | theCount
NULL | 0
Run Code Online (Sandbox Code Playgroud)
为什么会发生这种情况,我该怎么做才能避免这种情况?
尝试创建聚集索引时出现以下错误
该语句已终止。
消息 596,级别 21,状态 1,第 0 行
无法继续执行,因为会话处于终止状态。Msg 0, Level 20, State 0, Line 0
当前命令发生严重错误。结果,如果有的话,应该被丢弃。
指数是:
BEGIN TRANSACTION
SET QUOTED_IDENTIFIER ON
SET ARITHABORT ON
SET NUMERIC_ROUNDABORT OFF
SET CONCAT_NULL_YIELDS_NULL ON
SET ANSI_NULLS ON
SET ANSI_PADDING ON
SET ANSI_WARNINGS ON
COMMIT
BEGIN TRANSACTION
GO
CREATE CLUSTERED INDEX IX_CO_DES_INPUT
ON dbo.CO_DES_INPUT(DESIGN_ID, PRODUCT_INPUT_NUM, INPUT_NAME)
WITH(STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,
ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
ALTER TABLE dbo.CO_DES_INPUT
SET (LOCK_ESCALATION = TABLE)
GO
COMMIT
Run Code Online (Sandbox Code Playgroud)
我在 Windows …
我有一个包含业务逻辑的存储过程。在它里面我有大约 1609 个变量(不要问我为什么,这就是引擎的工作原理)。我尝试将SET一个变量连接到所有其他变量的连接值。结果在创建过程中出现错误:
消息 8631,级别 17,状态 1,过程 XXX,行 YYY 内部错误:已达到服务器堆栈限制。请在您的查询中寻找潜在的深层嵌套,并尝试简化它。
我发现错误是由于我需要在SET操作中使用的变量数量。我可以通过将其一分为二来执行任务。
我的问题是这方面有一些限制吗?我查了查,但没有找到。
我们检查了此 KB 中描述的错误,但这不是我们的情况。我们不在CASE代码中使用任何表达式。我们使用该临时变量来准备必须使用 CLR 函数替换的值列表。我们将 SQL Server 更新为 SP3 CU6(最新的),但我们仍然遇到错误。
这是我现在的代码:
BEGIN TRY
INSERT INTO TABLE (F1,F2,F3)
VALUES ('1','2','3')
END TRY
BEGIN CATCH
;THROW
END CATCH
Run Code Online (Sandbox Code Playgroud)
效果很好,除非它在装有 SQL 2008 的机器上运行。我想让 CATCH 块检查 SQL 版本并运行 THROW(如果它等于或高于 2012 年),如果是 2008 年则运行 RAISERROR。我一直遇到语法错误,我想知道是否有可能。即使像这样简单的事情也不适合我。
BEGIN CATCH
IF ((SELECT SERVERPROPERTY('productversion')) >= 11) ;THROW
END CATCH
Run Code Online (Sandbox Code Playgroud)
任何建议表示赞赏。
sql-server-2008 sql-server sql-server-2008-r2 sql-server-2012 sql-server-2014
我正在使用Bluefeet 的这个很好的例子https://dba.stackexchange.com/a/25818/113298,来创建一个数据透视表并将其转换为 xml 数据。
声明参数
DECLARE @cols AS NVARCHAR(MAX), @query AS NVARCHAR(MAX);
Run Code Online (Sandbox Code Playgroud)
接下来有一个代码很多的CTE,CTE的最终结果放在一个临时数据库中(与示例中相同)
SELECT
B.[StayDate] -- this is a date dd-mm-yyyy
, B.[Guid]
INTO #tempDates
FROM BaseSelection B
Run Code Online (Sandbox Code Playgroud)
生成 cols(与示例相同)
SELECT @cols = STUFF((SELECT distinct ',' +QUOTENAME(convert(char(10), [StayDate] , 120))
FROM #tempDates
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1,1,'');
Run Code Online (Sandbox Code Playgroud)
结果集是我应该期望的
set @query =
'SELECT [Guid],' + @cols +'
FROM
(
SELECT
[StayDate]
,[Guid]
FROM #tempDates
) A
pivot
(
count([StayDate])
for [StayDate] in (' + @cols +')
) …Run Code Online (Sandbox Code Playgroud) sql-server ×10
aggregate ×1
constraint ×1
errors ×1
installation ×1
null ×1
pivot ×1
string ×1
t-sql ×1
xml ×1