小编Zac*_*ith的帖子

SQL Server 查询超时设置更改是否需要重新启动服务器?

我正在尝试执行 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。为什么超时设置没有生效?我需要重新启动服务器吗?(这现在是不可能的)

sql-server

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

SQL Server:通过 .bak、BACPAC 或仅复制 .mdf 文件进行备份有什么区别?

备份数据库时创建的 .bak 文件与仅复制 .mdf 文件并按照此处所述进行恢复与创建 BACPAC 文件之间的区别是什么。

在这种情况下,日志本身并不重要,.bak 文件远大于实际数据库。(2GB 数据库上的 20GB 备份)。

对于这种备份策略(自己复制数据库文件),我会每天分离数据库,将 mdf 文件复制到外部媒体,然后重新连接数据库。每个数据库将有 3 个备份(在创建新备份时删除旧备份):

  • db_daily_backup
  • db_weekly_backup
  • db_monthly_backup

我意识到 MS SQL 提供了它自己的备份机制,这几乎肯定比我概述的要好。然而,即使是差异备份造成的膨胀对于我们所需要的和我们可用的空间量来说似乎太多了。

sql-server backup maintenance

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

为所有对象生成向后兼容的 CREATE DATABASE 脚本?

我正在使用 SQL Server 2016,我想将我创建的数据库部署到 Sql Server 2012 SP1。

我发现我无法在 v2016 中创建备份并恢复到 v2012。因此,在 v2016 版本中,我:

  • 右键单击数据库
  • 选择任务 > 生成脚本
  • 为所有对象编写一个 CREATE 语句

这有点工作......但我必须手动添加很多对象。该数据库具有表/视图/tvps/sps/标量函数。有没有办法编写向后兼容旧 SQL Server 版本的 create 语句?

sql-server ssms compatibility-level

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

SSIS 与 SQL Server 的关系是什么?

我发现诸如“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 ssis t-sql ssdt

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

SQL Server 2016 Standard Edition 是否包括复制?

我试图在 SQL Server 2016 SP1 标准版的实例上创建分发数据库。

我收到一个错误,提示未安装 SQL Server 的复制组件。我们最近将我们的服务器从 SQL Server 2012 升级到了 2016,我们之前曾测试过复制到开发机器。

我突然想到,没有安装复制组件的原因是我们可能没有为它们付费。查看此处找到的许可指南,我找不到有关复制的具体信息 - 要么是因为它包含在基本 SQL Server 应用程序中,要么属于某些通用产品名称(如“企业数据管理”)或其他名称。

问题:

  1. SQL Server 2016 Standard Edition 是否包括复制?
  2. 分发服务器是否算作单独的 SQL Server 实例并需要自己的许可证?
  3. 如果我们将其用作测试“开发”场地,我们是否仍需要购买许可证以从生产复制到开发,并将分发服务器托管在同一台开发机器上?

replication sql-server license sql-server-2016

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

什么是 SQL Server 分发服务器?

这个问题(SQL Server 事务复制分发器)提到了一篇博客文章HERE,其中讨论了分发数据库如何与发布者和订阅者相关的工作方式。看起来很清楚。

这是Distributor一个成熟的 SQL Server 实例吗?我知道它可以在单独的服务器上运行,所以看起来就像这样。如果不是,分发服务器和 SQL Server 实例之间有什么区别?

我从这篇文章中猜想,发布者的事务日志存储在分发数据库中,然后由订阅者读取。这就是所谓的“事务复制”吗?还有其他类型的复制吗?

replication sql-server

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

多个内连接返回什么交集?

如果我有一个查询:

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 之间没有交集?

join

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

如何回滚 SQL Server 事务并使用输出参数?

我试图在存储过程中设置一个输出参数,但我认为当我回滚事务时,我认为我也将分配回滚到@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

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

SQL Server:如何防止通过公开视图修改数据?

我有一个数据库: DB 1

在另一个数据库中DB 2,我想创建一堆引用DB 1. 这些视图会相对复杂,有很多连接、聚合、子查询等。

我不希望 的用户DB 2能够修改DB 1. 即我不希望用户能够在视图上执行插入、更新、删除查询。

这篇博文:http : //sqlhint.com/sqlserver/views/creating-readonly-views

建议我可以使用INSTEAD子句。除了特定用户之外,我更愿意仅禁止视图本身的某些查询子句。这可能吗?

security sql-server view

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