小编And*_*gel的帖子

在 SQL Server 中重新启动后的执行计划行为

我一直在思考重新启动服务后执行计划在 SQL SERVER 中的行为。我知道在缓存内存中的每个查询执行中都存在一个过程来解析、编译和优化请求的查询,应用基于 SQL 中的统计信息和其他参数的执行计划。所有这些执行计划都存储在存储引擎的缓冲池区域中。实际上,每次执行后,这些计划都会更新,让 SQL SEVER 了解新的改进。

这是我的疑问:每次我决定重新启动 SQL 服务时,缓存中的执行计划会发生什么?缓冲池区域中的所有改进都被存储并重新加载以在新的执行中可用?所有执行计划都在重新启动之前重新加载为最新版本,或者相反,SQL 需要创建新的执行计划库以继续改进执行?

拜托,伙计们,如果你能解释这种行为,我将非常感激。非常感谢

performance sql-server optimization query-performance

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

读取连接命令时出错

我正在尝试运行一个递归更改表,从我的 sys 表中读取几个参数。

DECLARE @AlterCmd NVARCHAR(MAX)

SELECT top 1
        @AlterCmd = 'ALTER TABLE [dbo].[table] ALTER COLUMN ' + COLUMN_NAME + ' NVARCHAR(' + CHARACTER_MAXIMUM_LENGTH + ')'
    FROM 
        information_schema.columns 
    WHERE 
        table_name = 'table_name' and DATA_TYPE like '%char%'

print @AlterCmd
Run Code Online (Sandbox Code Playgroud)

在此示例代码中,我只想验证命令是否正确,但由于连接中的错误而无法运行它。根据我收到的错误消息:

Msg 245, Level 16, State 1, Line 63
Conversion failed when converting the varchar value ')' to data type int.
Run Code Online (Sandbox Code Playgroud)

sql-server t-sql

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