标签: sql-server-2005

找不到存储过程

我创建了一个用游标重建索引的过程。我没有正确执行,而是收到一条错误消息:

消息 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)

sql-server-2005

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

无法收缩事务日志

这里有点令人头疼。

我有一个数据少于 1GB 的数据库,但有一个 40GB 的日志文件。事务日志每天备份,这个数据库没有很多活动;大约每周一次,它记录新的工资单信息,然后为报告目的反刍这些数据。数据库设置为自动收缩。

运行sp_spaceused @updateusage = true产生以下信息:

database_name   database_size   unallocated space
PayrollImports  39412.06 MB 105.00 MB

reserved    data    index_size  unused
321728 KB   278640 KB   42816 KB    272 KB
Run Code Online (Sandbox Code Playgroud)

运行DBCC shrinkfile (N'PayrollImports_log', 1 , notruncate)产生以下结果:

DbId    FileId  CurrentSize MinimumSize UsedPages   EstimatedPages
19  2   4991088 3456    4991088 3456
Run Code Online (Sandbox Code Playgroud)

...之间的差异UsedPagesEstimatedPages被神秘,但我继续DBCC shrinkfile (N'PayrollImports_log', 1 , truncateonly),并得到:

DbId    FileId  CurrentSize MinimumSize UsedPages   EstimatedPages
19  2   4991088 3456    4991088 3456
Run Code Online (Sandbox Code Playgroud)

在这一点上没有任何改变。日志文件仍然是 40GB。所以我想,也许我有一些公开的交易。运行dbcc …

sql-server-2005 sql-server maintenance transaction-log

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

为什么 SQL Server 不使用 Max Server Memory 设置?

我有一台带有以下内容的 SQL Server 机器:

  • Windows 2003 Enterprise SP2(32 位)
  • SQL Server 2005(32 位)
  • 12GB 内存
  • /PAE 开关在 boot.ini 中设置
  • 6 个 SQL 实例,全部启用 AWE
  • 机器上没有运行其他应用程序。

我将最大服务器内存使用量设置为我认为可接受的值(合计约 10GB,为 Windows 留出 2GB)。我使用以下查询来显示缓冲池和非缓冲池的总 RAM 使用量。我还展示了 MAX SERVER MEMORY 设置。每个实例上的数据库都比分配的 RAM 大得多,即使有几个实例比其他实例得到了更多的使用。实际使用的内存不应该总是非常接近 MAX SERVER MEMORY 设置吗?我发现了一个让我好奇的差距。

DECLARE @TotalRam as decimal (10,2)

--NON-BUFFER POOL
SET @TotalRam = (SELECT sum(pages_allocated_count)/128.0 [Non-Buffer (MB)]
from sys.dm_os_memory_cache_entries
where pages_allocated_count > 0)

--BUFFER POOL
SET @TotalRam = @TotalRam + (
SELECT CAST(COUNT(*) * 8/1024.0 AS DECIMAL (10,2))  AS [Buffer Pool …
Run Code Online (Sandbox Code Playgroud)

sql-server-2005 sql-server memory windows-server

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

如何一次在我的所有数据库中运行此 SQL 查询?

我有一个查询,让我知道有关备份的基本信息。我有几个 SQL 服务器,我希望能够一次查询。是否可以同时在多台服务器上运行以下查询?

SELECT 
   A.[Server],
   A.database_name, 
   A.last_db_backup_date,
   B.backup_type, 
   B.backup_start_date, 
   B.expiration_date,
   B.backup_size, 
   B.logical_device_name, 
   B.physical_device_name,  
   B.backupset_name,
   B.description
FROM
   (
   SELECT  
       CONVERT(CHAR(100), SERVERPROPERTY('Servername')) AS Server,
       msdb.dbo.backupset.database_name, 
       MAX(msdb.dbo.backupset.backup_finish_date) AS last_db_backup_date
   FROM    msdb.dbo.backupmediafamily 
       INNER JOIN msdb.dbo.backupset ON msdb.dbo.backupmediafamily.media_set_id = msdb.dbo.backupset.media_set_id 
   GROUP BY
       msdb.dbo.backupset.database_name 
   ) AS A

   LEFT JOIN 

   (
   SELECT  
   CONVERT(CHAR(100), SERVERPROPERTY('Servername')) AS Server,
   msdb.dbo.backupset.database_name, 
   msdb.dbo.backupset.backup_start_date, 
   msdb.dbo.backupset.backup_finish_date,
   msdb.dbo.backupset.expiration_date,
   msdb.dbo.backupset.backup_size, 
   msdb.dbo.backupmediafamily.logical_device_name, 
   msdb.dbo.backupmediafamily.physical_device_name,  
   msdb.dbo.backupset.name AS backupset_name,
   msdb.dbo.backupset.description,
   CASE msdb..backupset.type  
       WHEN 'D' THEN 'Full Database'  
       WHEN 'L' THEN 'Log'  
       WHEN 'I' THEN 'Differential'  
       WHEN 'F' THEN 'File Level' …
Run Code Online (Sandbox Code Playgroud)

sql-server-2005

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

将 SQL Server 2005 完全迁移到新服务器的过程

我的任务是“重建”一个数据库服务器,因为旧的正在消亡。为了减少新服务器的可能性,我们决定重建与旧服务器尽可能相似的服务器,因此,在 Windows Server 2003 之上的 SQL Server 2005 Enterprise。

现在,旧服务器的原始开发/维护人员已经走上了渡渡鸟的路(例如,他很久以前离开了公司,现在无处可寻)。因此,我们必须进行整体迁移。

更糟糕的是,旧服务器是一个大杂烩:数据库、混合用户凭据(SQL Server 身份验证Windows 身份验证)、一群链接服务器和一群 SQL Server 代理作业。

那么,我该如何处理这项艰巨的任务呢?在我看来,我有以下半生不熟的计划:

  1. 使用复制数据库向导复制数据库
  2. 使用 Script > CREATE To 复制用户
  3. 重新创建所有链接服务器
  4. 使用 Script > CREATE To 复制作业

对于上面的每一步,我可能都必须一个一个地完成:(

是否有更简单(例如,不那么乏味)的方法来进行迁移?

sql-server-2005 migration

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

只需要根据日期查询记录(给出示例查询)

sSQL = "
SELECT ordID, ordName, ordDate, ordShipping, ordStateTax, 
       ordHandling, ordTotal, ordDiscount, ordPrivateStatus 
FROM orders 
WHERE (ordStatus = 7)
"
Run Code Online (Sandbox Code Playgroud)

我想将昨天收到的订单显示为我正在构建的每日报告脚本

我该怎么办?

SQL Server 2005

ordDate 有这种格式: 2015-01-28 14:58:49.000

sql-server-2005 sql-server

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

重叠的多列统计数据是多余的吗?

我运行了一个数据库引擎优化顾问会话DTA 来优化我的数据库。

DTA 提出了一些统计建议,但是,我注意到有些包含在其他中,例如在我下面的表 ProductIcon 中:

    CREATE STATISTICS [_dta_stat_172123954_1_2_3_4_5_12] 
ON [dbo].[ProductIcon]
([ClassID], [SegmentID], [GroupID], [Tier1], [LanguageID], [Active])
    go

    CREATE STATISTICS [_dta_stat_172123954_11_1_2_3_4_5_12] 
ON [dbo].[ProductIcon]
([IconTypeID], [ClassID], [SegmentID], [GroupID], [Tier1], [LanguageID], [Active])
    go
Run Code Online (Sandbox Code Playgroud)

这是表定义:

    IF OBJECT_ID('[dbo].[ProductIcon]') IS NOT NULL 
    DROP TABLE [dbo].[ProductIcon] 
    GO
    CREATE TABLE [dbo].[ProductIcon] ( 
    [ClassID]      INT                              NOT NULL,
    [SegmentID]    INT                              NOT NULL,
    [GroupID]      INT                              NOT NULL,
    [Tier1]        VARCHAR(10)                      NOT NULL,
    [LanguageID]   SMALLINT                         NOT NULL  CONSTRAINT [DF_ProductIcon_LanguageID] DEFAULT ((1)),
    [Image]        VARCHAR(50)                      NOT NULL  CONSTRAINT [DF_ProductIcon_Image] DEFAULT (''),
    [Descr] …
Run Code Online (Sandbox Code Playgroud)

sql-server-2005 sql-server optimization statistics

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

如何在任何模式中查找空表的数量?

我想查询如何在我已经尝试过使用 select * from dba_tables where owner='HR' and num-rows is null 的架构 HR 中找到所有空表;但我不知道这是否是正确的逻辑

sql-server-2005 sql-server

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

不能截断具有 pk/fk 关系的表?

我有一个名为 Folder 的表,其中包含 3 个字段:Id (PK)、Name、UserId (FK)

另一个名为 User 的表有两个字段:Id (PK), UserName

我正在尝试运行此 sql:

truncate table Folder
truncate table User
Run Code Online (Sandbox Code Playgroud)

我收到以下错误

Cannot truncate table 'Folder' because it is being referenced by a FOREIGN KEY constraint.
Cannot truncate table 'user'   because it is being referenced by a FOREIGN KEY constraint.
Run Code Online (Sandbox Code Playgroud)

...即使在删除两个表中的所有记录后,我也得到了这个。为什么我不允许截断我的表格?

如果现在有办法在 pk/fk 关系表上运行截断,我如何在不使用截断的情况下轻松重置 PK 的种子?

编辑:添加了数据库图 在此处输入图片说明

sql-server-2005

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

执行无法手动停止的存储过程

我正在寻找解决方案:

  1. 允许管理员手动运行存储过程
  2. 一旦存储过程运行相同的管理员不能使用“取消执行查询”停止它
  3. 存储过程只能从 SSMS 调用。
  4. 除了 MS Management Studio 和 TSQL 之外,不能使用其他外部程序或语言。

我尝试创建一个存储过程而不是调用另一个存储过程,但它没有用。欢迎任何想法......

sql-server-2005 sql-server

0
推荐指数
2
解决办法
2295
查看次数