我创建了一个用游标重建索引的过程。我没有正确执行,而是收到一条错误消息:
消息 2812,级别 16,状态 62
找不到存储过程
该怎么做才能摆脱这种情况呢?
USE [ACT]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[myProcedure]
AS
BEGIN
DECLARE @idx_name VARCHAR(200) -- Index name
DECLARE @tableName VARCHAR(256) -- Table Name
DECLARE @sql varchar(500)
DECLARE Index_Rebuild_Cursor CURSOR FOR
SELECT OBJECT_NAME(ps.OBJECT_ID)tbl_name,b.name idx_name
FROM sys.dm_db_index_physical_stats (DB_ID(), NULL, NULL, NULL, NULL) AS ps
INNER JOIN sys.indexes AS b ON ps.OBJECT_ID = b.OBJECT_ID
AND ps.index_id = b.index_id
WHERE ps.avg_fragmentation_in_percent>80
OPEN Index_Rebuild_Cursor
FETCH NEXT FROM Index_Rebuild_Cursor INTO @tableName,@idx_name
WHILE @@FETCH_STATUS = …Run Code Online (Sandbox Code Playgroud) 我有几个 GB 的导入到我的 SQL Server 2005(标准版)数据库中。
导入分为 4 个部分,每个部分在自己的事务中。
您可以猜到,事务日志文件非常大。我磁盘上的空间也有限,但应该适合数据。导入时,磁盘上的可用空间约为 2 GB。
在我的交易正在进行时缩小文件是否有效?也会有影响吗?
sql-server-2005 sql-server shrink transaction transaction-log
我有一个乱序的列(通常,不是在 select 语句方面),我只是不知道它是如何变成那样的。
我一直在研究这个很长一段时间,结果是空的。我也无法在测试中重现它。
我已经通知开发人员,他们不允许运行未明确命名列的查询,正是出于这个原因。
然而,与此同时,我不知道我们是如何走到这种地步的,这让我很抓狂。
我的笔记本电脑上安装了 SSMS 2012,主机上安装了 SQL Server 2012,但是当我尝试安排 sql 作业时,我没有在左侧列表中找到“SQL Server 代理”!!?
谁能告诉我为什么这对我不起作用?
CREATE TABLE #UndistributedCmds
(
pendingcmdcount int,
estimatedprocesstime INT
)
INSERT INTO #UndistributedCmds
EXEC sp_replmonitorsubscriptionpendingcmds ...
Run Code Online (Sandbox Code Playgroud)
错误:
消息 8164,级别 16,状态 1,过程 sp_replmonitorsubscriptionpendingcmds,第 152 行
INSERT EXEC 语句不能嵌套。
该错误似乎暗示存储过程定义的第 152 行是问题所在,但我无法理解这一点。这是因为存储过程本身有多个存储过程吗?
我们在 SQL Server 2014 中使用事务复制,有一个主(发布者)、1 个分发者(专用服务器)和 3 个从(订阅者)。
所有的写入都是对 master 进行的,而读取是从 3 个订阅者之一完成的。
我的问题是,如果您进行了插入/更新/删除操作,并且页面正在刷新,则更新尚不存在。在订阅者更新之前有 1-4 秒的延迟,这会使用户感到困惑,因为该行已插入/删除/更新,但尚未反映在订阅者上...
我们正在考虑进行点对点复制,但这似乎是 IDENTITY 的开销,它可以返回写入一个,但复制也需要太多时间......
我们可以/应该做什么?
我每周使用Ola Hallengren 的解决方案更新统计数据。
根据下面的文章,我正在考虑启用 Auto Stats Async 并打开跟踪标志 2371。
现在,我的数据库的 async 选项为 false:
此外,来自SQL Server 2008 及更高版本的重要修补程序:
此设置允许异步自动更新统计信息,同时您当前运行的查询继续使用旧统计信息,直到更新的统计信息可供使用,从而降低不可预测的查询性能。对此的替代方案(这是默认设置)是暂停查询执行(仅适用于使用该对象统计信息的查询),同时为该对象自动同步更新统计信息。根据对象的大小以及硬件和 I/O 子系统,这可能需要几秒钟到几分钟的时间。
题:
在测试环境中,在将 Auto Update Stats Async 设置为 ON 之前/之后,可以进行哪些好的简单测试?
在什么情况下我更有可能从异步自动更新统计信息中受益?
数据库 500GB+,大表。
我在两节点 Windows Server 故障转移群集上运行的 SQL Server 2014 上设置了一个可用性组。设置由两个独立实例 + 同步自动故障转移组成。
我读过的许多 Microsoft 文章都提倡为 TempDB 使用多个文件来提高性能。似乎他们建议使用 8 个文件。
在这种配置的情况下,我应该这样做吗?它会提高性能吗?
我想通过添加一列来更改表格。到目前为止,这里没什么可看的,但我想让这个列成为复合键的一部分,即,我现在有一个布局
table_name( Field_1 datatype PK, Field_2 datatype,....)
Run Code Online (Sandbox Code Playgroud)
并且我希望插入的列,比如 Field_k 与现有的单字段 PK 一起成为 PK 的一部分。
我还没有找到有关如何执行此操作或是否可行的任何来源。请问有什么建议吗?
我从 Excel 粘贴了一个公式并粘贴到 SQL Server Management Studio。
一旦我执行它,我得到一个意想不到的结果:
SELECT (((10320238-2092189)/2092189)*100.0)/4.0 --returns 75.000000
Run Code Online (Sandbox Code Playgroud)
但是在对查询中的每个值添加精度后,它返回正确的结果:
SELECT (((10320238.0-2092189.0)/2092189.0)*100.0)/4.0 --returns 98.31866289250000
Run Code Online (Sandbox Code Playgroud)
为什么第一个查询不会带来 98% 的结果?的内部数据类型是10320238什么?是integer吗?
发动机是
Microsoft SQL Server 2012 (SP3) (KB3072779) - 11.0.6020.0 (X64)
Oct 20 2015 15:36:27
Copyright (c) Microsoft Corporation
Standard Edition (64-bit) on Windows NT 6.3 <X64> (Build 9600: ) (Hypervisor)
Run Code Online (Sandbox Code Playgroud) sql-server ×9
t-sql ×2
alter-table ×1
ddl ×1
foreign-key ×1
optimization ×1
replication ×1
shrink ×1
ssms ×1
statistics ×1
tempdb ×1
transaction ×1