我正在维护一个 SQL Server 2005 数据库,该数据库承载大约 2.9Tb 的数据(2 x 1.45Tb - 我有一个 RAW 架构和一个 ANALYSIS 架构,因此基本上是摄取的数据的两个副本)。恢复模型很简单,.ldf大小为 6Gb。
无论出于何种原因,.mdf都是 7.5Tb。现在,分析表中可能只有 2-3 个额外的列,并且没有多少NVARCHAR(MAX)列,根据我的理解(可能有错误理解 - 如果我错了,请纠正我)可能会导致额外的空间分配。那是在刚刚缩小数据库之后 - 在此之前它约为 9Tb。有什么想法吗?
并且,如果您有其他问题,请告诉我 - 我对数据库管理和优化工作非常陌生(我通常不做这方面的工作:))。
非常感谢!
安德里亚
在玩 AG 设置时,我启动了 WSFC,并在一个名为 DevClusterOnline 的可用性组中配置了两个节点。两个节点(DEV-AWEB5 主节点,DEV-AWEB6 辅助节点)都运行 Windows Server 2008 R2。
如果我检查我的 AG 的健康状况,我会得到:

运行下面的查询将返回此结果集:

select
ar.replica_server_name,
availability_group_name = ag.name,
ar.availability_mode_desc,
ar.failover_mode_desc
from sys.availability_replicas ar
inner join sys.availability_groups ag
on ar.group_id = ag.group_id
order by availability_group_name, replica_server_name;
Run Code Online (Sandbox Code Playgroud)
如果我断开 DEV-AWEB5,我无法连接到组侦听器 (DevListener),但是我可以 ping 它并且它会响应我的 ping。副本 - DEV-AWEB6 进入 RESOLVING 状态,我的数据库无法访问。但是,我可以手动进入 Management Studio 并将故障转移设置为 DEV-AWEB6,然后我再次启动并运行,DevListener 将再次接受连接。
考虑到这些事实证实故障转移确实有效,我已经同步提交并配置了自动故障转移,我不知道如果我的设置出现故障怎么办。
当我断开 DEV-AWEB5 的连接时,我希望我的副本会保持连接,因此 DevListener 也会保持连接。我希望自动故障转移将允许我透明地连接到 AG 侦听器。从最终用户的角度来看,使用 Web 系统应该不会注意到其中一台数据库服务器出现故障。
我被困在这里,有人能告诉我我做错了什么吗?
如果目标数据库中存在表,我正在尝试签入存储过程。如果没有,我将使用源数据库中的 information_schema 表创建表。但是,当我使用 sp_execute 尝试恢复表是否存在时,我收到错误过程需要“int”类型的参数“@handle”。
我没有使用@handle 参数。有人能告诉我这个错误是什么意思以及为什么我会收到它吗?我的代码的相关部分如下。
DECLARE @SQL NVARCHAR(MAX),
@Parameters NVARCHAR(4000),
@TableNotExists INT,
@SourceTable NVARCHAR(200),
@DestDB NVARCHAR(200)
BEGIN
SET @SourceTable = 'table'
SET @DestDB = 'database'
SET @Parameters = N'@SourceTableIN NVARCHAR(200), @TableNotExistsOut INT OUTPUT'
SET @SQL = N'USE [' + @DestDB + '] IF NOT EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = ''BASE TABLE'' AND TABLE_NAME = @SourceTableIN)
BEGIN SET @TableNotExistOUT = 1 END'
EXEC sp_Execute @SQL, @Parameters, @SourceTableIN = @SourceTable, @TableNotExistsOUt = @TableNotExists OUTPUT
END
Run Code Online (Sandbox Code Playgroud) 我在我的投资组合中发现了许多使用默认自动增长设置(1 MB 或 10% 增量)创建的数据库,这些数据库已经扩展了很长一段时间。如果我想了解每个 DB 文件的外部碎片量,是否可以从元数据中获取 DB 文件的大小修改次数(通过自动增长或手动)?澄清一下,我是否可以从元数据中获取 DB 生命周期内 DB 文件修改的历史记录,而不仅仅是因为实例重启?
我每 5 分钟从 sys.dm_io_virtual_file_stats 收集 IO_STALLS,然后进行增量以查看哪些文件受 IO 影响最大。
在一个 5 分钟的时间内,我得到了 5826331 毫秒的增量,即 97 分钟。
我对此有点困惑,这是说 97 分钟前开始的操作仅在那时完成并因此记录了等待时间?
谢谢
根据要求添加代码:
/*
USE [SysDBA]
GO
*/
/****** Object: Table [dbo].[DISKIOPS] Script Date: 04/07/2013 11:40:15 ******/
/*
DROP TABLE [dbo].[DISKIOPS]
GO
*/
--Create the table
/****** Object: Table [dbo].[DISKIOPS] Script Date: 04/07/2013 11:40:15 ******/
/*
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[DISKIOPS](
[IO_STALL] [bigint] NULL,
[IO_STALL_READ_MS] [bigint] NULL,
[IO_STALL_WRITE_MS] [bigint] NULL,
[NUM_OF_READS] [bigint] NULL, …Run Code Online (Sandbox Code Playgroud) 下面的代码执行以下操作:
尝试将 temp_table 切换回 play_table 分区 2 并失败
消息 4982,级别 16,状态 1,第 64 行 ALTER TABLE SWITCH 语句失败。检查源表“play_partition.dbo.temp_table”的约束允许目标表“play_partition.dbo.play_table”上的分区 2 定义的范围不允许的值。
为什么会失败?
我使用的是 SQL Server 2014(企业版试用版)。
问候,
科林戴利
http://www.colindaley.com/translator
/* Playing with partitioned tables */
USE master;
GO
DROP DATABASE play_partition;
GO
CREATE DATABASE play_partition
ON PRIMARY(
NAME = play_partition
, FILENAME …Run Code Online (Sandbox Code Playgroud) 我有一个不容易弄清楚的情况,我想我会在这个论坛上问其他人是否有建议。
我在 Windows Server 2008R2 Enterprise 上运行 SQL Server 2008 R2 Standard SP3。
一个数据库需要一些维护,事后我需要在另一台服务器上恢复。我使用 COPY_ONLY 和一组 4 个 tlog 备份完成了完整的数据库备份。
FULL为BULK_LOGGED恢复模式BULK_LOGGED为FULL恢复模式由于还原服务器上的驱动器号更改,所有备份的还原必须使用 WITH MOVE。
恢复步骤:
RESTORE database SomeDB FROM DISK = 'D:\REPRO\SomeDB.bak'
WITH
MOVE 'SystemData' TO 'D:\SQLDATA\SomeDB.mdf'
,MOVE 'SystemDataPDS' TO 'D:\SqlData\SomeDB.ndf'
,MOVE 'SystemData_log' TO 'D:\SQLLogs\SomeDB.LDF'
,NORECOVERY
,stats = 1
RESTORE LOG SomeDB FROM DISK …Run Code Online (Sandbox Code Playgroud) 有人知道我如何列出 SQL Server 实例中的准备好的语句吗?
据我所知,调整最大服务器内存和最大并行度不需要重新启动实例。新设置会不会不重启就一直生效?
当我在浏览master数据库时,SSMS我注意到在Tables文件夹下还有一个名为的文件夹Systems Tables,里面有一堆表格。我们是否有可能Systems Tables在我们的数据库中创建一个类似的结构?
我希望将表和存储过程组织到项目特定的文件夹中。在新设置下 - 当我指的是我的表对象时,我将不得不使用以下语法(我在这里猜测):
[dbName].[projectName].[dbo].[tableName]
Run Code Online (Sandbox Code Playgroud)
此外,除了清理混乱之外,是否有人预见到由于这种重组而导致的任何性能改进/降级?我用Microsoft SQL Server 2008 R2.
sql-server ×10
datafile ×1
dynamic-sql ×1
partitioning ×1
performance ×1
recovery ×1
restore ×1
shrink ×1
ssms ×1
t-sql ×1