小编Bog*_*nov的帖子

可以参与 SET 操作的局部变量的最大数量是多少?

我有一个包含业务逻辑的存储过程。在它里面我有大约 1609 个变量(不要问我为什么,这就是引擎的工作原理)。我尝试将SET一个变量连接到所有其他变量的连接值。结果在创建过程中出现错误:

消息 8631,级别 17,状态 1,过程 XXX,行 YYY 内部错误:已达到服务器堆栈限制。请在您的查询中寻找潜在的深层嵌套,并尝试简化它。

我发现错误是由于我需要在SET操作中使用的变量数量。我可以通过将其一分为二来执行任务。

我的问题是这方面有一些限制吗?我查了查,但没有找到。

我们检查了此 KB 中描述的错误,但这不是我们的情况。我们不在CASE代码中使用任何表达式。我们使用该临时变量来准备必须使用 CLR 函数替换的值列表。我们将 SQL Server 更新为 SP3 CU6(最新的),但我们仍然遇到错误。

sql-server t-sql database-internals sql-server-2012 errors

11
推荐指数
2
解决办法
2783
查看次数

为什么在将文件组设置从 RESTRICTED_USER 更改为 MULTI_USER 后,我的数据库镜像会崩溃?

我的环境如下: VMWare 5.5激活服务器MS Windows Server 2008R2 Enterprise域和SQL Server 2008 R2 Enterprise。具有光纤通道连接的集中存储。

我的SQL Server DB. 我有 2 个file groups:一个带有实时数据 (FG1),第二个带有历史数据 (HDG)

第二个文件组是read-only. 每个月我都会在分区中移动 - 我将新数据(来自上个月)添加到历史数据中。这个过程是自动的

我们将数据库移至新服务器。最初,我必须手动完成该过程。在此操作期间,我的镜像出现故障(在操作 3 之后 - 请参阅下面的流程流程)并出现以下错误:

在主服务器上:

日志中的第 0 行:

Date        15.6.2015 20:54:11
Log     SQL Server (Current - 16.6.2015 07:55:00)

Source      spid84

Message
Setting database option MULTI_USER to ON for database MYDB.
Run Code Online (Sandbox Code Playgroud)

日志中的第 1 行:

Date        15.6.2015 20:54:11 …
Run Code Online (Sandbox Code Playgroud)

sql-server mirroring partitioning vmware

9
推荐指数
1
解决办法
1066
查看次数

如何在存储过程完成之前获得响应?

我需要在完成之前从存储过程返回部分结果(作为简单的选择)。

有可能这样做吗?

如果是,如何做到这一点?

如果没有,有什么解决方法吗?

编辑:我有几个部分的程序。在第一部分我计算了几个字符串。我稍后会在过程中使用它们来进行附加操作。问题是调用者尽快需要字符串。因此,我需要计算该字符串并将其传回(不知何故,例如从选择中),然后继续工作。调用者更快地获得其有价值的字符串。

调用者是一个 Web 服务。

stored-procedures t-sql sql-server-2012 multi-thread web-service

9
推荐指数
3
解决办法
2998
查看次数

如何从性能的角度更好地使用 CLR 函数(在每个 DB 内部重复或具有通用功能)?

我问了一个关于XML使用XSD schemainside验证的问题SQL Server 2012(见链接)。我明白(正如我怀疑的那样)我需要使用CLR Function. 该函数将获取XSD schema textXML text进行验证。

我将有 1 个配置数据库和许多安装数据库。从那个角度来看,我想知道在哪里创建该功能 - 在配置数据库中还是在每个安装数据库中?

从支持的角度来看,最好只有一个 CLR 功能。

xml t-sql sql-server-2012 functions sql-clr

7
推荐指数
1
解决办法
1393
查看次数

在转换为 XML 之前如何在 TSQL 中转义 XML 字符?

我有XML 结构,它是我的存储过程的输入参数。它包含带有& 的元素(在 XML 中转义)。当我提取该元素以VARCHAR接收& 时,它不是有效的 XML 字符。在再次转换为 XML 之前,我需要对其进行转义。如何做到这一点没有REPLACE

我有以下文字:param1=xyz&para2=dasdasdfdas&param3。它是查询字符串的一部分。我将其转换XML并作为 XML 结构的一部分发送:

<zzz xmlns="http://example.com">
  <aaa>aaa</aaa>
  <bbb>param1=xyz&amp;para2=dasdasdfdas&amp;param3</bbb>
</zzz>
Run Code Online (Sandbox Code Playgroud)

在存储过程中,我需要提取它。我这样做:

ISNULL(NULLIF(LTRIM(RTRIM(@XMLInput.value('declare default element namespace "http://example.com"; (zzz/bbb)[1]', 'NVARCHAR(250)'))), ''), '');
Run Code Online (Sandbox Code Playgroud)

之后,该值包含普通文本(& -s 未转义 - &)。

经过一些处理后,我需要将该字符串放入其他 XML 中。我做:

CAST( ... AS XML);

因为& -s 没有转义,所以我出错了。

xml sql-server t-sql type-conversion

6
推荐指数
1
解决办法
2万
查看次数

在 SQL Server 2012 中的 TSQL 函数中使用 XSD 验证 XML?

我需要在 TSQL 中使用 XSD 验证 XML。为了使此任务半自动化,我需要在 TSQL 函数中执行此操作。

为了进行验证,我必须将值设置为 XML,如果它无效,我将收到一个错误。

我的问题是在 TSQL 函数内部我不能使用TRY / CATCH. 这是正确的方式吗,如果有可能做到这一点?

xml t-sql sql-server-2012 functions sql-clr

5
推荐指数
1
解决办法
917
查看次数

TSQL 2012 删除了 INSTEAD OF 和 AFTER 触发器中的表?

我的同事问我很简单,但对我来说很难的问题:

如果我deletedINSTEAD OF触发器中有 10 条记录的表并且我删除了其中的 8 条记录,那么我deletedAFTER触发器中的表中有多少条记录?

我认为它应该是 10,但我不确定。

trigger sql-server-2012

1
推荐指数
1
解决办法
63
查看次数

特信行为问题?

我以非常模糊的方式提出问题,因为我无法用简短的句子解释我的问题是什么。

一般来说,我有一组转换文本和 XML 的过程。里面的程序,我有很多NVARCHARXML变量与表XML列。在我的数据中,我有特殊的字母(例如ò)。当我运行所有代码时,特殊字符消失并显示为?- 这意味着我得到了VARCHAR而不是NVARCHAR.

总的来说,我一切都好,直到最后的步骤。我得到了EXEC哪个调用存储过程具有类型为临时构造的变量NVARCHAR。我有一个包含XML字段的表。在这种情况下,我得到了?. 如果我手动运行程序(不在 中EXEC INTO),我会得到正确的符号。

任何想法为什么会发生这种情况?我检查了所有变量,它们是NVARCHAR.

xml dynamic-sql sql-server-2012 cast unicode

0
推荐指数
1
解决办法
47
查看次数