我正在尝试执行 10 分钟后超时的查询。根据经验,我知道执行查询大约需要 18 分钟。这并不理想,并且正在处理中,但是现在我只需要它来执行。
但是,将Remote query timeout参数更改为 后0,查询在 10 分钟后仍然超时。我收到消息:
The statement has been terminated.
Msg -2, Level 11, State 0, Line 16
Execution Timeout Expired. The timeout period elapsed prior to completion of the operation or the server is not responding.
Run Code Online (Sandbox Code Playgroud)
这是在远程计算机上使用 SSMS。为什么超时设置没有生效?我需要重新启动服务器吗?(这现在是不可能的)
备份数据库时创建的 .bak 文件与仅复制 .mdf 文件并按照此处所述进行恢复与创建 BACPAC 文件之间的区别是什么。
在这种情况下,日志本身并不重要,.bak 文件远大于实际数据库。(2GB 数据库上的 20GB 备份)。
对于这种备份策略(自己复制数据库文件),我会每天分离数据库,将 mdf 文件复制到外部媒体,然后重新连接数据库。每个数据库将有 3 个备份(在创建新备份时删除旧备份):
我意识到 MS SQL 提供了它自己的备份机制,这几乎肯定比我概述的要好。然而,即使是差异备份造成的膨胀对于我们所需要的和我们可用的空间量来说似乎太多了。
我正在使用 SQL Server 2016,我想将我创建的数据库部署到 Sql Server 2012 SP1。
我发现我无法在 v2016 中创建备份并恢复到 v2012。因此,在 v2016 版本中,我:
这有点工作......但我必须手动添加很多对象。该数据库具有表/视图/tvps/sps/标量函数。有没有办法编写向后兼容旧 SQL Server 版本的 create 语句?
我发现诸如“SSIS”、“SSDT”等的首字母缩略词对于它们与 SQL Server 的关系有点令人困惑。在我看来,SQL Server 实现了 T-SQL 语言,并且诸如“SSIS”之类的包是 T-SQL 语言上的第三方“包装器”,并且实际上是 SQL Server 的插件。这样对吗?
这篇博文(这里)提到了 SSIS 与 T-SQL 的优势(这就是为什么我认为 SSIS 是 T-SQL 的包装器)。此外,我可以看到创建为 SSIS 包的作业可以在 SSMS 的 SQL Server 代理下找到。
我试图在 SQL Server 2016 SP1 标准版的实例上创建分发数据库。
我收到一个错误,提示未安装 SQL Server 的复制组件。我们最近将我们的服务器从 SQL Server 2012 升级到了 2016,我们之前曾测试过复制到开发机器。
我突然想到,没有安装复制组件的原因是我们可能没有为它们付费。查看此处找到的许可指南,我找不到有关复制的具体信息 - 要么是因为它包含在基本 SQL Server 应用程序中,要么属于某些通用产品名称(如“企业数据管理”)或其他名称。
问题:
这个问题(SQL Server 事务复制分发器)提到了一篇博客文章HERE,其中讨论了分发数据库如何与发布者和订阅者相关的工作方式。看起来很清楚。
这是Distributor一个成熟的 SQL Server 实例吗?我知道它可以在单独的服务器上运行,所以看起来就像这样。如果不是,分发服务器和 SQL Server 实例之间有什么区别?
我从这篇文章中猜想,发布者的事务日志存储在分发数据库中,然后由订阅者读取。这就是所谓的“事务复制”吗?还有其他类型的复制吗?
如果我有一个查询:
SELECT * FROM A
INNER JOIN B ON B.ID = A.ID
INNER JOIN C ON C.ID = B.ID
Run Code Online (Sandbox Code Playgroud)
这会为此查询返回不同的结果吗?
SELECT * FROM A
INNER JOIN B ON B.ID = A.ID
INNER JOIN C ON C.ID = A.ID
Run Code Online (Sandbox Code Playgroud)
在我看来,在第一个查询中,我会得到 A、B、C 的交集。在第二个查询中,我将得到 A、B 的交集和 A、C 的交集。
如果是这种情况,我是否会在 B/C 的列中找到 NULL 值,其中 B、C 之间没有交集?
我试图在存储过程中设置一个输出参数,但我认为当我回滚事务时,我认为我也将分配回滚到@out. 那是对的吗?
如果是这样,我如何返回消息并回滚事务?我正在@out从 C#获取参数。
create PROCEDURE [dbo].[sp]
@out varchar(2000) output
AS
BEGIN
SET NOCOUNT ON
BEGIN TRANSACTION
BEGIN TRY
SET @OUT = "success";
COMMIT TRANSACTION
END TRY
BEGIN CATCH
set @out = 'not success';
ROLLBACK TRANSACTION
END CATCH
END
Run Code Online (Sandbox Code Playgroud)
我原本是在做一个
SELECT
ERROR_NUMBER() AS ErrorNumber,
ERROR_SEVERITY() AS ErrorSeverity,
ERROR_STATE() AS ErrorState,
ERROR_PROCEDURE() AS ErrorProcedure,
ERROR_LINE() AS ErrorLine,
ERROR_MESSAGE() AS ErrorMessage;
Run Code Online (Sandbox Code Playgroud)
...但这没有帮助,尽管我更喜欢这种方法。
sql-server stored-procedures error-handling ssdt sql-server-2016
我有一个数据库: DB 1
在另一个数据库中DB 2,我想创建一堆引用DB 1. 这些视图会相对复杂,有很多连接、聚合、子查询等。
我不希望 的用户DB 2能够修改DB 1. 即我不希望用户能够在视图上执行插入、更新、删除查询。
这篇博文:http : //sqlhint.com/sqlserver/views/creating-readonly-views
建议我可以使用INSTEAD子句。除了特定用户之外,我更愿意仅禁止视图本身的某些查询子句。这可能吗?
sql-server ×8
replication ×2
ssdt ×2
backup ×1
join ×1
license ×1
maintenance ×1
security ×1
ssis ×1
ssms ×1
t-sql ×1
view ×1