小编mar*_*c_s的帖子

如何在 SQL Server 中轮换跟踪日志

我们在 SQL Server 2012 中使用 4032 和 3605 跟踪标志来获取预期的日志输出。

现在,我们希望每天轮换日志文件,将其存档在 Amazon Glacier 存储设施中。

任何有关日志轮转的指针将不胜感激,

sql-server log trace-flags

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

这个 MERGE 语句中的更新是多余的吗?

我正在尝试提高复杂存储过程的性能。存储过程内部是以下MERGE语句。我对MERGE语法不是很熟悉。

[Contact].[PhoneNumber]表如下所示:

CREATE TABLE [Contact].[PhoneNumber]
(
    [Id] [int] IDENTITY(1,1) NOT NULL PRIMARY KEY,
    [PhoneNumber] [nvarchar](255) NOT NULL
    [InsertedAtDateTimeUTC] [datetime2](7) NOT NULL DEFAULT(sysutcdatetime())
)
Run Code Online (Sandbox Code Playgroud)

合并看起来像这样:

;WITH _ContactPhoneNumbers ([PhoneNumber]) AS 
(
    SELECT DISTINCT ([#ChannelData].[CallerAni])
    FROM [#ChannelData]
)
MERGE [Contact].[PhoneNumber] WITH (HOLDLOCK) _target
USING [_ContactPhoneNumbers] _source ON [_target].[PhoneNumber] = [_source].[PhoneNumber]

WHEN NOT MATCHED THEN
    INSERT ([PhoneNumber])
    VALUES ([PhoneNumber])

WHEN MATCHED THEN
    UPDATE 
        SET [_target].[PhoneNumber] = [_source].[PhoneNumber]
        OUTPUT INSERTED.[Id], [_source].[PhoneNumber] INTO #Contact_PhoneNumber_Output ([Id], [PhoneNumber]);   
Run Code Online (Sandbox Code Playgroud)

我把它读为:

如果表PhoneNumber中不存在 …

sql-server t-sql sql-server-2008-r2 merge

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

列存储索引会减少数据空间吗?这怎么可能?

我正在测试我的一个查询的性能。我正在尝试不同的索引。当我在我的表上应用列存储索引时,表大小减少了 70-80%。这怎么可能?

sql-server columnstore

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

从 SQL Server Express 到 SQL Server 2012 的数据备份

我可以将备份数据从 SQL Server Express 恢复到 SQL Server,两个 2012 版本吗?

sql-server-2012

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

有没有人有一个存储过程来截断时态表?

有没有人知道或知道将执行通用临时表操作以便历史记录和主表都被截断的存储过程?

您必须更改它以设置 system_versioning = off,然后删除历史表,然后截断主表,然后在主表上重新启用版本控制。我打算构建一个通用存储过程来为传递给它的任何数据库/模式/表名称执行此操作,但如果有人已经拥有它,肯定会很好。如果可以避免的话,我从不喜欢重新发明轮子。

sql-server stored-procedures temporal-tables

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

SQL Server:删除行触发器

我有这 3 个表:

构造函数员工

  • EID (员工 ID)作为主键和其他键。

项目

  • PID 作为主键和其他键。

项目建设者员工

  • PIDEID作为其他表的外键。

每个ConstructorEmployee可以在几个Projects. 我需要创建一个触发器,如果项目已被删除,我需要删除所有ConstructorEmployee 该工作在这个项目上。我需要从ConstructorEmployee表中删除它们。

我正在研究 SQL Server 2017。

trigger sql-server sql-server-2017

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

Select 语句来检索 xml 输出,如下所示

有人可以为我提供一些线索或解决方案来检索如下记录集吗?

注意:我阅读了 msdn 文档,但除了脱发之外别无他法:(

只是假设我有 2 个表通过 Rid 字段连接

表 1 列:

 Rid, UserName, Hash
Run Code Online (Sandbox Code Playgroud)

表 2 列:

 Rid, Phone, City, Email
Run Code Online (Sandbox Code Playgroud)

Table1Table2通过Rid柱连接。

我想使用 xml 自动或 xml 显式或您在 SQL Server 2005 Express 中获得的任何 xml 操作来获得 xml 输出。

预期输出:

<UserDetails>
    <Account>
        <UserName>
        </UserName>
        <Hash>
        </Hash>
    </Account>
    <Personal>
        <Phone>
        </Phone>
        <City>
        </City>
    </Personal>
</UserDetails>
Run Code Online (Sandbox Code Playgroud)

@matt 请查看我在下面创建的程序。当您在开始时使用代码执行存储过程时,您就会知道我面临的问题

stack_getusers  '<Request Type="GetUsers" CRUD="R">
                            <UserDetails>
                                <Rid></Rid>
                            </UserDetails>
                        </Request>'

CREATE PROCEDURE [dbo].[stack_getusers]    
@doc NTEXT    
AS    
DECLARE @idoc INT
EXEC sp_xml_preparedocument @idoc OUTPUT, …
Run Code Online (Sandbox Code Playgroud)

sql-server-2005 xml

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

SQL Server 数据库保持半独立

如果我没有使用所有正确的术语,但我有将自己与 SQL Server 分离的数据库,请原谅我。在 SQL Server Management Studio 中,数据库旁边将缺少加号,或者数据库将没有表。

现在解决这个问题很容易,只需分离并附加数据库,我们就可以备份并运行了。但这是什么原因呢?

sql-server-2005 sql-server ssms sql-server-2008-r2

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

SQL Server 2008 评估已过​​期

我有(不止一个实例)我对 SQL Server 2008 eval 的一些实验(为什么 eval --> 关于使用许可版本进行测试或短生命周期实验的残酷官僚主义),到期后我保存了虚拟图像,现在我想使用 DataCenter 许可证启动其中的一些,但此版本不允许我重新安装或升级过期的实例,并带有保留系统设置、用户、链接服务器等的选项......

我的问题:

  • 是否有一些版本的 SQL Server 2008(ms-whatever 没有给我答案)能够启动过期的 eval?

  • 是否有关于从文件中卸载和附加的评论?

  • (也许真的很愚蠢)是否可以通过使用命令行中的某些参数或第三个参数来卸载 eval 并安装 Datacenter。派对工具?

sql-server-2008 sql-server

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

在 SQL Server 2008 中选择正确的字段数据类型

我收到了创建一个新表的请求,该表将为客户存储某些信息。除了一个字段外,表的定义有些无关紧要。该字段将存储从终端屏幕检索到的 ANSI 字符。

一开始会有大约 5000 万行,最初,我们估计该字段需要 <= 7,500 个字符,所以我选择使用VARCHAR(8000)数据类型。经过更多分析,我们确定 3000 万行中大约 90% 将 <= 8000,但另外 10% 将 <= 15,000。

VARCHAR由于 8,000 的限制,我显然不能使用它,所以我认为我唯一的选择是text数据类型。我担心“文本”的开销,它最终可能会被删除。我现在正在研究VARCHAR(max),但我从未在生产环境中使用过它。

我应该使用varchar(max)text还是寻找一种方法来压缩那 10% 的数据并将其存储在varchar(8000).

database-design sql-server-2008-r2

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