我将从数据库迁移。image我想将一列类型导出到文件系统上的二进制文件。每条记录一个文件。如何使用 SQL Server 执行此操作?
我知道我可以通过运行 sp_cycle_errorlog 轻松循环当前错误日志,但我想知道 SQL Server 是否会删除旧的/存档的错误日志文件。似乎无法在任何地方找到答案...
众所周知,DMV 不保存有关页数和行数的准确信息。但是,当您更新统计数据时,我不明白为什么他们不会。
我正在开发一个监控工具,想知道每个索引和数据的磁盘大小等。最终我想找到合适的填充因子,以及其他一些东西。
The space used by my function and the old sp_spaceused differs a little bit on the space usage, but not on record count.
Can you see if there is anything missing in my select?
this is the sp_spaceused (then I convert the numbers in MB):
sp_spaceused 'tblBOrderRelationship'
go
select 318008/1024.00 AS reserved,
140208/1024.00 AS data,
177048/1024.00 AS index_size,
752/1024.00 AS unused
Run Code Online (Sandbox Code Playgroud)

But when I run my select, code below\picture below, I get slightly different figures.
SET TRANSACTION …Run Code Online (Sandbox Code Playgroud) 我正在尝试servername\instancename使用以下调用在 SQL Server 2014 实例上创建链接服务器:
EXEC master.dbo.sp_addlinkedserver
@server = N'servername\instancename',
@srvproduct=N'SQL Server'
Run Code Online (Sandbox Code Playgroud)
我收到错误:
Msg 15028, Level 16, State 1, Procedure sp_addlinkedserver, Line 82
The server 'servername\instancename' already exists.
Run Code Online (Sandbox Code Playgroud)
这在 SQL Server 2005 中运行良好,并且根据MSDN,
链接服务器不必是 SQL Server 的另一个实例,
所以我不确定最近版本中不允许这样做的更改。使用 UI 会生成类似的消息:
不能将本地 SQL Server 创建为链接服务器。
我知道请求是一件奇怪的事情,但它是为了支持一些在 2005 年工作的遗留代码(并且曾经在不同的实例上)。文档指出它应该可以工作,但事实并非如此。有没有办法让它在 2014 年工作,或者我将不得不修改底层代码?
我正在尝试定义一种使用测试数据库(在 SQL Server 中)进行集成测试的方法。
我的想法是在启动集成测试程序集时执行以下步骤:
(db)_Basis“基线”的数据库快照,用于未来的集成测试现在,在每个测试类(包含 1-n 个测试)之前,我计划简单地执行“从快照恢复”以恢复到定义明确的、或多或少的数据库“空”状态。到目前为止,它就像一个魅力。
但是,有一组集成测试需要在大型测试数据库上运行 - 所以我希望在每个测试装置(具有 n 个单独测试的类)之前执行此操作
(db)_Basis快照恢复数据库(db)_With_Testdata快照然后对于每个测试,将数据库重置为明确定义的(db)_With_Testdata快照版本,运行测试,验证结果等等。
问题是:我似乎无法同时拥有两个数据库快照 - 一旦我这样做了,我就无法将我的数据库恢复到其中任何一个......我不断收到此错误:
消息 3137,级别 16,状态 4,第 9 行
数据库无法恢复。主要或快照名称指定不正确,所有其他快照尚未删除,或者缺少文件。消息 3013,级别 16,状态 1,第 9 行
RESTORE DATABASE 异常终止。
这真的是 SQL Server 数据库快照的工作方式吗??似乎非常限制..... 如果我不能直接回到原始的“(db)_Basis”快照我会理解 - 但仅仅因为我现在有两个快照,我什至不能回到最近的一个?!?!?
我正在尝试解决发生不到一秒钟的阻塞问题。OLTP 应用程序非常敏感,根据商定的 SLA,某些事务的响应时间必须小于 200 毫秒。我们在新代码版本中遇到了一些锁升级问题,我们能够通过减少更新中的批量大小来解决这些问题。即使批量较小,我们也怀疑新的 sp 阻塞了 OLTP 事务正在更新的相同行。
我需要找到被阻塞的会话及其等待的资源。根据我的理解,“阻塞进程阈值”可以设置至少 1 秒,因此这不会捕获阻塞。
我正在试验 wait_info 和 wait_completed x 事件。
有没有其他方法可以跟踪这个。谢谢
performance sql-server sql-server-2014 query-performance performance-tuning
以下是Microsoft Docs 中的一段:
在堆重建之前,作为 DML 操作的一部分在堆中分配的新页面不会使用 PAGE 压缩。通过移除和重新应用压缩,或者通过创建和移除聚集索引来重建堆。
我不明白为什么会这样。如果我有一个具有指定压缩设置的堆,为什么不将它应用于属于该表的页面?
谢谢
我们有一个访问数据库的应用程序(Sql server 2014 企业版)。应用程序调用一个存储过程来访问数据库。一切正常,直到最近开始发送以下错误并停止应用程序。重新启动应用程序可以暂时解决该问题,但稍后会遇到相同的错误。
错误:从服务器接收结果时发生传输级错误。(提供者:TCP 提供者,错误:0 - 指定的网络名称不再可用。)
我做了很多研究,其中大多数指出是网络问题,但找不到任何实际解决问题的方法。有谁知道我应该在数据库方面做出什么改变来解决这个问题。我非常感谢任何建议。
我收到复制错误“要复制的 LOB 数据长度 (2135980) 超出配置的最大值 65536”。
先前应用 sp_configure 将其设置为最大值 (-1),对 sys.configurations 的查询确认最大值 (-1) 正在使用中。
EXEC sp_configure 'max text repl size', -1 ;
RECONFIGURE;
GO
select * from sys.configurations
where name like 'max text repl size%';
GO
Run Code Online (Sandbox Code Playgroud)
我曾尝试对“最大文本复制大小”使用大值而不是最大值,然后将其关闭再打开,但无济于事。
还有其他东西可能会覆盖“最大文本复制大小”设置或我可以查看的其他任何地方吗?
在下面的语法中,When Matched如果更新表中的值与员工表中的值不同,是否可以只更新?类似于我下面的 DDL - 但当然这会引发错误并且不起作用。
我应该在语法中更新什么以仅更新不同的行?我想要的更新不是迭代匹配的每一行,而是emp44 & emp55因为地址不同而只更新。
出现的错误是
消息 156,级别 15,状态 1,第 24 行
关键字“WHERE”附近的语法不正确。
句法
DECLARE @Emp Table (empid varchar(10), empaddress varchar(100))
Insert Into @Emp Values
('emp11', '111 No Blue'),
('emp22', '222 No Blue'),
('emp33', '333 No Blue'),
('emp44', '444 No Blue'),
('emp55', '555 No Blue');
Declare @EmpUpdates TABLE (empid varchar(10), empaddress varchar(100))
Insert Into @EmpUpdates Values
('emp11', '111 No Blue'),
('emp22', '222 No Blue'),
('emp33', '333 No Blue'),
('emp44', '999 No Blue'),
('emp55', …Run Code Online (Sandbox Code Playgroud) sql-server ×10
blob ×1
compression ×1
connectivity ×1
datafile ×1
disk-space ×1
dmv ×1
error-log ×1
export ×1
heap ×1
index ×1
merge ×1
migration ×1
performance ×1
snapshot ×1
t-sql ×1