我们在 SQL Server 2012 中使用 4032 和 3605 跟踪标志来获取预期的日志输出。
现在,我们希望每天轮换日志文件,将其存档在 Amazon Glacier 存储设施中。
任何有关日志轮转的指针将不胜感激,
我正在尝试提高复杂存储过程的性能。存储过程内部是以下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中不存在 …
我正在测试我的一个查询的性能。我正在尝试不同的索引。当我在我的表上应用列存储索引时,表大小减少了 70-80%。这怎么可能?
我可以将备份数据从 SQL Server Express 恢复到 SQL Server,两个 2012 版本吗?
有没有人知道或知道将执行通用临时表操作以便历史记录和主表都被截断的存储过程?
您必须更改它以设置 system_versioning = off,然后删除历史表,然后截断主表,然后在主表上重新启用版本控制。我打算构建一个通用存储过程来为传递给它的任何数据库/模式/表名称执行此操作,但如果有人已经拥有它,肯定会很好。如果可以避免的话,我从不喜欢重新发明轮子。
我有这 3 个表:
构造函数员工
EID (员工 ID)作为主键和其他键。项目
PID 作为主键和其他键。项目建设者员工
PID并EID作为其他表的外键。每个ConstructorEmployee可以在几个Projects. 我需要创建一个触发器,如果项目已被删除,我需要删除所有ConstructorEmployee 该工作仅在这个项目上。我需要从ConstructorEmployee表中删除它们。
我正在研究 SQL Server 2017。
有人可以为我提供一些线索或解决方案来检索如下记录集吗?
注意:我阅读了 msdn 文档,但除了脱发之外别无他法:(
只是假设我有 2 个表通过 Rid 字段连接
表 1 列:
Rid, UserName, Hash
Run Code Online (Sandbox Code Playgroud)
表 2 列:
Rid, Phone, City, Email
Run Code Online (Sandbox Code Playgroud)
Table1并Table2通过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 分离的数据库,请原谅我。在 SQL Server Management Studio 中,数据库旁边将缺少加号,或者数据库将没有表。
现在解决这个问题很容易,只需分离并附加数据库,我们就可以备份并运行了。但这是什么原因呢?
我有(不止一个实例)我对 SQL Server 2008 eval 的一些实验(为什么 eval --> 关于使用许可版本进行测试或短生命周期实验的残酷官僚主义),到期后我保存了虚拟图像,现在我想使用 DataCenter 许可证启动其中的一些,但此版本不允许我重新安装或升级过期的实例,并带有保留系统设置、用户、链接服务器等的选项......
我的问题:
是否有一些版本的 SQL Server 2008(ms-whatever 没有给我答案)能够启动过期的 eval?
是否有关于从文件中卸载和附加的评论?
(也许真的很愚蠢)是否可以通过使用命令行中的某些参数或第三个参数来卸载 eval 并安装 Datacenter。派对工具?
我收到了创建一个新表的请求,该表将为客户存储某些信息。除了一个字段外,表的定义有些无关紧要。该字段将存储从终端屏幕检索到的 ANSI 字符。
一开始会有大约 5000 万行,最初,我们估计该字段需要 <= 7,500 个字符,所以我选择使用VARCHAR(8000)数据类型。经过更多分析,我们确定 3000 万行中大约 90% 将 <= 8000,但另外 10% 将 <= 15,000。
VARCHAR由于 8,000 的限制,我显然不能使用它,所以我认为我唯一的选择是text数据类型。我担心“文本”的开销,它最终可能会被删除。我现在正在研究VARCHAR(max),但我从未在生产环境中使用过它。
我应该使用varchar(max)、text还是寻找一种方法来压缩那 10% 的数据并将其存储在varchar(8000).
sql-server ×7
columnstore ×1
log ×1
merge ×1
ssms ×1
t-sql ×1
trace-flags ×1
trigger ×1
xml ×1