标签: sql-server

如何将图像列导出到 SQL Server 中的文件?

我将从数据库迁移。image我想将一列类型导出到文件系统上的二进制文件。每条记录一个文件。如何使用 SQL Server 执行此操作?

sql-server migration export datafile blob

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

SQL Server 是否会删除旧的错误日志文件?

我知道我可以通过运行 sp_cycle_errorlog 轻松循环当前错误日志,但我想知道 SQL Server 是否会删除旧的/存档的错误日志文件。似乎无法在任何地方找到答案...

sql-server error-log

14
推荐指数
3
解决办法
3万
查看次数

sys.allocation_units 和 sp_spaceused 上的空间使用情况

众所周知,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)

index sql-server dmv disk-space

14
推荐指数
2
解决办法
6617
查看次数

创建指向自身的链接服务器

我正在尝试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 linked-server sql-server-2014

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

用于集成测试的 SQL Server 数据库快照

我正在尝试定义一种使用测试数据库(在 SQL Server 中)进行集成测试的方法。

我的想法是在启动集成测试程序集时执行以下步骤:

  • 创建一个完全空的数据库
  • 运行“创建数据库对象”脚本以创建所有相关的数据库对象(表、视图、序列等)
  • 填充“基础数据”(查找值等)
  • 拍摄一个称为(db)_Basis“基线”的数据库快照,用于未来的集成测试

现在,在每个测试类(包含 1-n 个测试)之前,我计划简单地执行“从快照恢复”以恢复到定义明确的、或多或少的数据库“空”状态。到目前为止,它就像一个魅力。

但是,有一组集成测试需要在大型测试数据库上运行 - 所以我希望在每个测试装置(具有 n 个单独测试的类)之前执行此操作

  • (db)_Basis快照恢复数据库
  • 将那 50'000 多行数据插入到数据库中
  • 创建另一个快照(db)_With_Testdata快照

然后对于每个测试,将数据库重置为明确定义的(db)_With_Testdata快照版本,运行测试,验证结果等等。

问题是:我似乎无法同时拥有两个数据库快照 - 一旦我这样做了,我就无法将我的数据库恢复到其中任何一个......我不断收到此错误:

消息 3137,级别 16,状态 4,第 9 行
数据库无法恢复。主要或快照名称指定不正确,所有其他快照尚未删除,或者缺少文件。

消息 3013,级别 16,状态 1,第 9 行
RESTORE DATABASE 异常终止。

这真的是 SQL Server 数据库快照的工作方式吗??似乎非常限制..... 如果我不能直接回到原始的“(db)_Basis”快照我会理解 - 但仅仅因为我现在有两个快照,我什至不能回到最近的一个?!?!?

sql-server snapshot

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

如何跟踪发生不到一秒的阻塞 - SQL Server

我正在尝试解决发生不到一秒钟的阻塞问题。OLTP 应用程序非常敏感,根据商定的 SLA,某些事务的响应时间必须小于 200 毫秒。我们在新代码版本中遇到了一些锁升级问题,我们能够通过减少更新中的批量大小来解决这些问题。即使批量较小,我们也怀疑新的 sp 阻塞了 OLTP 事务正在更新的相同行。

我需要找到被阻塞的会话及其等待的资源。根据我的理解,“阻塞进程阈值”可以设置至少 1 秒,因此这不会捕获阻塞。

我正在试验 wait_info 和 wait_completed x 事件。

有没有其他方法可以跟踪这个。谢谢

performance sql-server sql-server-2014 query-performance performance-tuning

14
推荐指数
2
解决办法
1018
查看次数

堆上的压缩

以下是Microsoft Docs 中的一段:

在堆重建之前,作为 DML 操作的一部分在堆中分配的新页面不会使用 PAGE 压缩。通过移除和重新应用压缩,或者通过创建和移除聚集索引来重建堆。

我不明白为什么会这样。如果我有一个具有指定压缩设置的堆,为什么不将它应用于属于该表的页面?

谢谢

sql-server heap compression

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

指定的网络名称不再可用

我们有一个访问数据库的应用程序(Sql server 2014 企业版)。应用程序调用一个存储过程来访问数据库。一切正常,直到最近开始发送以下错误并停止应用程序。重新启动应用程序可以暂时解决该问题,但稍后会遇到相同的错误。

错误:从服务器接收结果时发生传输级错误。(提供者:TCP 提供者,错误:0 - 指定的网络名称不再可用。)

我做了很多研究,其中大多数指出是网络问题,但找不到任何实际解决问题的方法。有谁知道我应该在数据库方面做出什么改变来解决这个问题。我非常感谢任何建议。

sql-server connectivity sql-server-2014

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

要复制的 LOB 数据长度 (2135980) 超过配置的最大值 65536

我收到复制错误“要复制的 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)

我曾尝试对“最大文本复制大小”使用大值而不是最大值,然后将其关闭再打开,但无济于事。

还有其他东西可能会覆盖“最大文本复制大小”设置或我可以查看的其他任何地方吗?

sql-server sql-server-2008-r2 transactional-replication

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

将 Where 子句与 Merge 一起使用

在下面的语法中,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 t-sql sql-server-2008-r2 merge

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