小编Aar*_*and的帖子

我可以检查当前通过 SSMS 运行的服务吗?

我想通过在 SSMS 上运行脚本/查询来检查哪些服务已启动,哪些尚未启动。

sql-server ssms

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

具有可用性组的跨数据库事务

最近我们正在做一个 POC 来实现 Always on work 并且碰巧在 BOL 中看到了这篇文章

http://technet.microsoft.com/en-us/library/ms366279.aspx

这篇文章表明,我们在处理同步模式时也会存在逻辑上的不一致,但事实真的会如此吗?

例如,考虑事务正在运行的数据库 A 和 B,A 处于高安全模式并且 B 没有镜像。A 的日志必须转到镜像数据库,然后主数据库提交最终两阶段提交(B 上的事务)成功,但文章建议首先不会传输日志并导致 B 上的提交,这是矛盾的。请帮助我理解上述文章中建议的陈述是否属实。如果是的话怎么可能:)。

PS:如果我需要提供有关此的更多信息,请告诉我。

sql-server-2012 msdtc availability-groups

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

创建索引时保留了多少视图?

假设我有一个由以下 SQL 定义的视图:

SELECT t1.id, t2.name, t3.address
FROM Table1 as t1
INNER JOIN Table2 t2
  ON t1.id = t2.tID
INNER JOIN Table3 t3
  ON t1.id = t3.tID
Run Code Online (Sandbox Code Playgroud)

据我所知,如果我在这个视图上创建一个索引,那么数据将被持久化,但我不清楚究竟是什么被持久化了。假设我在 t1.id 上创建了一个唯一的聚集索引,是否将所有三列都保存到磁盘中,或者是否仍会在运行时计算从 table2 和 table3 中提取的值?

如果其中任何一个没有意义,或者我是否遗漏了任何重要内容,请告诉我。

index sql-server-2008 sql-server materialized-view

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

为什么我不能使用 fn_dump_dblog 读取我的事务日志备份文件?

我在 sqlskills.com 上使用此博客作为练习在事务日志备份中查找相关 LSN 以进行时间点恢复的指南。

备份事务日志后,我尝试使用以下命令读取它:

SELECT COUNT(*) FROM fn_dump_dblog (
NULL, NULL, 'DISK', 1, 'D:\TEMP\test_tlog2.bak',
DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT,
DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT,
DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT,
DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT,
DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT,
DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT,
DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT,
DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT,
DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, …
Run Code Online (Sandbox Code Playgroud)

sql-server-2008 sql-server sql-server-2008-r2 restore transaction-log

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

为现有的 AlwaysOn 数据库启用 TDE

我需要对 AlwaysOn 进行一些基准测试,无论是否启用 TDE。我看到的所有说明都涉及将加密数据库添加到可用性组,但我没有提到为 AG 中已有的数据库启用加密。

我可以将服务器证书恢复到所有节点,然后从主节点启用 TDE 吗?我希望我不需要从 AG 中删除数据库,对其进行加密,然后重新初始化所有节点,因为数据库大约为 100 GB。如果需要,我们可以这样做,但这肯定会减慢我们的测试速度。

更新

我只是在一些实验室虚拟机上尝试过这个。我能够在主节点上创建一个证书,在所有辅助节点上恢复它,然后使用这个证书在主节点上创建一个数据库加密密钥。之后我所要做的就是ALTER DATABASE AdventureWorks SET ENCRYPTION ON在主服务器上,一两分钟后,sys.dm_database_encryption_keys 在所有节点上都显示了 encryption_state = 3。

那么,后续问题:是否有任何理由认为我不应该使用此程序?SQL Server 似乎对结果很满意,但我还没有看到任何地方讨论过这种方法。在处理加密和高可用性问题时,我不想让事情碰运气。

sql-server sql-server-2012 availability-groups transparent-data-encryption

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

MERGE 最佳实践的说明

我只是想从“优化 MERGE 语句性能”页面。

我正在使用一个数据仓库,它从许多不同的数据库中获取记录并存储数据。我的仓库数据库中的所有表基本上都遵循相同的模式:

CREATE TABLE Foo (
    database_guid UNIQUEIDENTIFIER
    ,FooPk BIGINT
    ,Bar NVARCHAR(20)
    ,Qix NCHAR(10)
    ,CONSTRAINT [PK_Foo] PRIMARY KEY CLUSTERED (
        database_guid ASC
        ,FooPk ASC
        )
    )
GO

CREATE PROCEDURE [iv].[LoadSomeTable] 
    @databaseGUID UNIQUEIDENTIFIER
AS
BEGIN
    SET NOCOUNT ON

    MERGE Foo
    USING #FooStaging AS Source
    ON Foo.FooPk = Source.FooPk AND Foo.database_guid = @databaseGUID
    WHEN MATCHED THEN
        UPDATE SET Bar = Source.Bar
                  ,Qix = Source.Qix
    WHEN NOT MATCHED THEN
        INSERT (database_guid, FooPk, Bar, Qix)
            VALUES (@databaseGUID, FooPk, Bar, Qix); …
Run Code Online (Sandbox Code Playgroud)

sql-server best-practices t-sql sql-server-2012 merge

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

如何更改列顺序?

如何更改 sql server 2008 R2 中的列顺序?

例如:我的餐桌顺序是开斋节------Ename-----Esalary

知道我想要这种格式,例如 Eid---Salary----Ename

谢谢。

database-design sql-server sql-server-2008-r2 alter-table ddl

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

什么会导致自动递增主键跳过数字?

我有一个使用以下 T-SQL 创建的表:

CREATE TABLE [dbo].[TableName](
    [id] [int] IDENTITY(1,1) NOT NULL
PRIMARY KEY CLUSTERED 
(
    [id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
Run Code Online (Sandbox Code Playgroud)

我今天查看了这张表,注意到 id 列正在跳过值:

1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26、27、1027、1028、1029、1030、1031、1032、1033、1034、1035、2034、2035、3034

我不担心这个或任何事情(我的应用程序不关心主键是什么),我只是想知道可能导致这种情况发生的原因。似乎确实有一种模式,每次“跳跃”发生时跳跃 1000。

我的应用程序使用实体框架插入这些行,如果这有什么不同的话。

sql-server entity-framework auto-increment identity sql-server-2012

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

多个事务日志文件和性能影响

所以我和几个人就一个给定的数据库应该拥有的事务日志文件的数量进行了争论。我看过几篇帖子说每个数据库应该只有 1 个事务日志文件,但在任何 Microsoft 白皮书中都没有。然而,在许多情况下,我已经看到增加给定数据库的事务日志文件的数量实际上会提高对数据库的写入性能。我应该注意到,所有这些数据库都处于完全恢复模式,并且为 I/O 子系统使用了大型 SAN 框架。如果很多帖子都说事务写入都是串行发生在一个文件中,直到到达文件末尾,那么写入会转移到后续的日志文件中,为什么增加日志文件的数量最终会对磁盘写入速度有非常明显的提高?在最近的案例中,通过将日志文件的数量从 1 增加到 8,我们看到 IO 从 700 Kb/s 跃升至超过 60 Mb/s。任何输入都将不胜感激。

performance sql-server-2008 sql-server transaction-log

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

将 CHAR 转换为 DATETIME 以便我可以使用 DATEADD()

我有一个关于将DATEADD()函数用于标识为的列的问题CHAR (6)

time_stamp列包含类似131329as 的值hhmmss。每当我尝试创建一个新列来保存列的值time_stamp+ 5 分钟时,我都会收到错误消息。

消息 242,级别 16,状态 3,第 1 行
字符数据类型到日期时间数据类型的转换导致日期时间值超出范围。`

我想要做的是创建一个新列,它比time_stamp. 我现在正在处理一份显示“已完成订单”的报告,但我需要该报告将订单显示为“未完成”至少 5 分钟,然后才能在报告中显示为“已完成”。

sql-server t-sql type-conversion datetime

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