标签: sql-server-2012

SQL Server 2012 Managment Studio 不保存自动恢复文件

我试着去Tools > Environment > AutoRecover

  • 保存自动恢复复选框被选中。
  • 每“5”分钟保存一次。
  • 保留自动恢复信息:7 天。

但它不保存任何自动恢复文件(我在我的用户文件夹中搜索了*.sql),并且不建议在 Management Studio 因断电而关闭时自动恢复。

我搜索了注册表以查看是否手动更改了某些内容,HKEY_CURRENT_USER\Software\Microsoft\Microsoft SQL Server但只找到了一个键:CustomerFeed.

sql-server ssms sql-server-2012

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

SQL Server 全文搜索 - .rtf 文件被 rtf 标签错误地索引

我已经在我的 SQL Server DB 上的一varbinary(max)列上设置了全文索引。我指定了一个类型列,其中包含文件的扩展名,例如“.doc”、“.pdf”等。

但是,我注意到当任何 .rtf 文件被索引时,SQL 将包含文件中的所有元信息(例如 RTF 标记“listoverridecount0”)。

这使索引膨胀很多,也意味着搜索将匹配这些标签(即我可以搜索“listoverridecount0”并返回每个 .rtf)。

.rtf 的 iFilter 是否有任何理由不会删除 RTF 标签?

当我运行这个:

SELECT * FROM sys.fulltext_document_types WHERE document_type = '.rtf';
Run Code Online (Sandbox Code Playgroud)

我明白了:

document_type  .rtf                                     
class_id       C7310720-AC80-11D1-8DF3-00C04FB6EF4F 
path       c:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Binn\msfte.dll
version        12.0.6828.0
manufacturer   Microsoft Corporation
Run Code Online (Sandbox Code Playgroud)

我已提交Microsoft Connect 错误,因为我似乎无法找到任何解决方法。据推测,这是 a) RTF iFilter 未删除标签的错误,或 b) 全文索引问题。

我的 SQL Server 版本是:

Microsoft SQL Server 2012 (SP1) - 11.0.3393.0 (X64) 
2013 年 10 月 25 日 19:04:40 
版权所有 (c) 微软公司 …

sql-server full-text-search sql-server-2012

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

在 SQL Server 中查询差异变化图

差异备份使用差异更改映射页面来确定要备份的页面。我想研究一种涉及差异备份的备份策略。为此,我想自动跟踪多个数据库随时间变化的数据量。

我想以编程方式查询差异更改映射以确定更改了多少页。

DBCC PAGE根据http://www.practicalsqldba.com/2013/07/sql-server-understanding-differential.html这似乎是可能的。有没有比这更清洁或“记录更多”的方式?看起来这在实施时会很笨拙且容易出错。

sql-server sql-server-2012

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

如何避免跨数据库 proc 调用的竞争条件?和其他问题

我什至不确定这个问题是否有必要,但我很想知道每个人的想法。我在同一台服务器上有两个数据库,dbFoo、dbBar。dbFoo 有下表,请注意这是一个简单的例子,语法可能不正确,因为我很匆忙,对潜在问题的答案更感兴趣,然后是代码......

CREATE TABLE dbo.CodeNumbers(
CodeNumbersID INT IDENTITY (1,1) NOT NULL PRIMARY KEY,
CodeValue VARCHAR(30) NOT NULL
IsUsed BIT NOT NULL DEFAULT(0)
);
Run Code Online (Sandbox Code Playgroud)

dbo.CodeNumbers使用每月提供的 CSV 填充,您选择的导入方法已经写入以将它们放入那里。我们从来没有得到重复的代码。

为了论证,让我们假设表中有 10,000,000 行。导入时都遵循以下格式:

1, 'ajdirjfisofklrlfo039402', 0 all the way till
10000000, 'fkeiir9489', 0
Run Code Online (Sandbox Code Playgroud)

现在在 dbBar 我有 2 个存储过程,第一个应该访问 dbFoo 中第一个未使用的代码,将它返回到一个 out 变量中并将其标记为已使用。所以我有类似的东西:

CREATE PROCEDURE GetNextUseableCode
   @CodeOut VARCHAR(30) OUTPUT,
   @CID INT OUTPUT
AS
   SELECT @CID = CodeNumbersID, @CodeOut = CodeValue
   FROM dbFoo.dbo.CodeNumbers
   WHERE IsUsed = 0

   UPDATE dbFoo.dbo.CodeNumbers
   SET IsUsed = 1
   WHERE CodeNumbersID …
Run Code Online (Sandbox Code Playgroud)

sql-server stored-procedures t-sql sql-server-2012

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

如何允许使用 2 个不同的 ip 连接到 SQL Server

我在这里有一个小问题:我在集群上有一个 SQL Server 实例 2012(我们称之为 SQLINSTANCE)。对于这个实例,我还有 2 个网络接口:

- SQLINSTANCE.my.network
- SQLINSTANCE.mgt.my.network.
Run Code Online (Sandbox Code Playgroud)

我的实例侦听特定端口1550.

如果我想连接到它,这是我的结果:

- SQLINSTANCE.my.network\INSTANCE: working
- SQLINSTANCE.mgt.my.network\INSTANCE: NOT working.
Run Code Online (Sandbox Code Playgroud)

我的猜测是它涉及 SQL 浏览器,但我找不到如何告诉它需要侦听两个地址。

我正在使用没有防火墙的 Windows Server 2008r2。这两个地址都被设置为集群管理器中 SQL Server 的资源。

sql-server clustering sql-server-2012 windows-server

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

SQL Profiler - 插入值?

我设置了一个 SQL 分析器来运行,但我没有看到任何更新/插入值。有没有办法看到他们?

我看到的都是这样的:

insert into some_tbl(id, col1, col2, col3) values ( @P0 , @P1 , @P2 )
Run Code Online (Sandbox Code Playgroud)

我很想真正看到插入的值而不仅仅是一个通用变量,但似乎无法弄清楚?

profiler sql-server-2012

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

捕获非常昂贵的查询

我有一个 2008/2012 年的 Sql 服务器。一些用户运行非常昂贵的查询,例如在一个事务中更新 1G 行或交叉连接几个非常大的表,它会导致服务器时常无响应。

跟踪/触发服务器以在发生时保存正在运行的查询的好方法是什么?

sql-server-2008 sql-server sql-server-2012

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

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
查看次数

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

我有一个使用以下 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万
查看次数

SQL Server 审计规范 - 按除一名用户之外的所有用户过滤 DML

我正在设置数据库审计。我想捕获除与应用程序相关的服务帐户之外的数据库用户发出的任何 DML 更改。

简而言之,这是为了向我们的外部审计员证明没有用户在应用程序之外篡改数据。

以下脚本设置了对所有原则通用的 DML 审计。

CREATE DATABASE AUDIT SPECIFICATION [OurDatabaseAuditSpec]
FOR SERVER AUDIT [OurAudit]
ADD (DELETE ON OBJECT::[dbo].[SensitiveData] BY [public]),
ADD (INSERT ON OBJECT::[dbo].[SensitiveData] BY [public]),
ADD (UPDATE ON OBJECT::[dbo].[SensitiveData] BY [public])
WITH (STATE = ON)
GO
Run Code Online (Sandbox Code Playgroud)

我如何修改此审计规范以捕获除应用程序服务帐户正在执行的操作之外的所有内容?

我仅限于单独指定每个原则还是可以指定一个例外?通过 BOL 阅读似乎我只能列出要审核的原则 - 而不是要忽略的原则。

sql-server audit sql-server-2012

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