标签: sql-server

存储过程使用的 UDF 是否在 SP 本身中进行了优化/合并?

这个问题让我疯狂了几天,我可能已经找到了答案,但我需要确认并检查最终的简单解决方案。

当存储过程使用一些用户定义的函数时,UDF 计划是合并到主计划中并且一切都得到优化还是每次都直接调用?

假设它没有发生,有没有办法强制 SQL Server 为特定的 SP 执行它?

sql-server query optimization

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

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

如何将 SQL Server 2017 设置为服务

我有一个关于将 SQL Server 2017 设置为服务的最佳方式的问题。

我有客户将 SQL Server 数据库作为服务购买,就好像它是 Azure 或 AWS 实例一样,他们无法访问服务器。他们在实例中只有用户名和密码,我需要向这些用户隐藏可通过 SQL Server Management Studio 或 T-SQL 命令访问的服务器配置,例如分配给实例的内存、CPU 数量等.

在 SQL Server 2016 中,我通过删除 master..xp_msver 视图的权限来完成此操作。例如,如果没有此权限,他们将无法查看实例属性(在 SSMS 中右键单击服务器)和 Facets 表单中的一些数据。即使没有此权限,他们也可以登录并在其数据库中执行所需的一切操作。

但在 SQL Server 2017 中,这不再有效,如果我拒绝此视图的权限,则无法再登录 SQL Server。

我知道将标准 SQL Server 用作服务可能不正确,也许它还没有为此做好准备,但是有正确的方法吗?或者可以使用哪些替代方案?

我花了很多时间在 Google 上试图寻找替代方案,但是对于 SQL Server 2017,我没有找到任何隐藏服务器设置的东西。

注意:我的用户使用 SQL Server Management Studio...

sql-server sql-server-2017

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

一个表可以同时具有聚集列存储索引和非聚集列存储索引吗?

一个表可以同时具有聚集列存储索引和非聚集列存储索引吗?

我看到了仅将聚集列存储索引与非聚集二进制行索引一起使用的示例策略。

当我尝试创建集群列存储和非集群列存储时,我收到错误:

Msg 35339, Level 16, State 1, Line 7
Multiple columnstore indexes are not supported.
Run Code Online (Sandbox Code Playgroud)

performance index sql-server columnstore sql-server-2016 performance-tuning

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

连接池错误

我从我的 .net 应用程序中收到以下错误。

Source: xxx.Services.xxx.xxx.xxxx.xxxx.xxxxRequest
    ---
    System.Data.Entity.Core.EntityException: The underlying provider failed on Open. ---> System.InvalidOperationException: Timeout expired.  The timeout period elapsed prior to obtaining a connection from the pool.  This may have occurred because all pooled connections were in use and max pool size was reached.
Run Code Online (Sandbox Code Playgroud)

我看过几篇关于这个连接池错误的帖子。我已经阅读了其中的大部分内容,我明白为什么会发生这种情况,以及应用程序端的可能解决方案,比如关闭应用程序打开的连接。这些是我的理解:

  1. 打开的连接并没有关闭,称为连接泄漏。
  2. 正在使用 100 多个并发连接。如果我们有 100 个以上的并发用户,请增加连接字符串中的最大池大小。
  3. 缓慢的查询或打开的事务会阻止新连接。当连接被慢速查询执行/打开事务保持打开时,而不是重用连接,新连接将打开并最终达到连接池最大值。

我如何从数据库端监控这一点。我看到了一些建议,例如使用 sp_who 或 sp_who2 查看现有会话。当我看到这些错误时执行 sp_who2 时,我看到很多活动会话,但是我怎么能看到连接池池下的信息和连接。问题:

  1. 有什么方法可以跟踪打开的连接并将其与从数据库端创建的连接池相关联。

我注意到当问题发生时,通常运行得更快的查询会变慢。

  1. 这是预期的吗?因为我怀疑慢查询是否导致连接池错误。

sql-server transaction connection-pooling timeout

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

DBATools 离线安装 - 未找到 export-dbainstance

我按照https://dbatools.io/offline/ 上的说明进行操作:

  1. 下载压缩包并解压

  2. 运行$env:PSModulePath以查找所有路径。

  3. 复制到C:\Program Files\WindowsPowerShell\Modules.

  4. 跑 Get-ChildItem -Recurse "C:\Program Files\WindowsPowerShell\Modules" | Unblock-File

当我尝试运行时Export-DbaInstance -SqlInstance,出现以下错误:

术语 Export-DBAInstance 无法识别”。

任何帮助将不胜感激。

sql-server powershell dbatools

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

日志传送 - 辅助数据库 - 哪种恢复模式?

在日志传送配置中 - 主数据库必须处于完整或大容量日志恢复模式。但是,对从库的恢复模式有什么要求吗?

示例:假设主数据库和辅助数据库都处于完整恢复模式,如果发生故障转移并且辅助数据库成为新的主数据库,我们可以更改数据库恢复模式。

另请参阅:https : //www.microsoftpressstore.com/articles/article.aspx?p=2832586&seqNum=3并搜索“日志传送数据库必须使用完整恢复模型”。- 这样对吗?

sql-server log-shipping recovery-model

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

应用程序可以从本地 SQL Server 实例和 Azure SQL 一起连接到数据库吗?

一个应用程序可以连接到两个不同的数据库,每个数据库都在不同的实例中。一个实例在本地部署,另一个实例是 Azure SQL(不是 Azure VM 中的 SQL)。那么基本上一个应用程序可以从两个实例访问数据吗?

sql-server azure-sql-database

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

使用资源调控器并分配更多内存以满足查询的高内存授予请求?

在 SQL Server 2016 数据库服务器上,我几乎没有查询非常慢并且需要更多内存(查询未优化)。这使得整个数据库变慢,因为许多用户正在运行相同的查询。这导致其他查询等待。我CXCONSUMER等待(由于并行执行)和RESOURCE_SEMAPHORE.

所以这造成了内存压力(我相信这些缓慢的查询正在为其他查询造成内存争用,进而造成内存压力),我认为这导致我的计划缓存以固定的时间间隔清除。

我读到默认情况下Memory Grant %为 25%。我正在考虑增加这 25% 来为查询提供内存。我现在正在尝试暂时解决这个问题。

未优化的查询是 LINQ 查询,更改将需要团队一些时间。

所以请建议在资源调控器中增加Memory Grant %是否是一个好主意?

我总共有 128GB RAM,其中 75% (102 GB) 分配给 SQL Server。

sql-server memory resource-governor waits

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

在回滚状态下杀死备份数天

我杀死了一个 80 MB 数据库的备份作业,它已经回滚了好几天......

我试图将数据库带入单用户模式,但那太挂在回滚状态。

我尝试杀死连接到数据库的所有会话,但仍然无法删除它。我用这个脚本来完成杀戮:

DECLARE @kill varchar(8000) = ''; SELECT @kill = @kill + 'kill ' + 
    CONVERT(varchar(5), session_id) + ';' 
FROM sys.dm_exec_sessions 
WHERE database_id = db_id('fpddev92') 
exec(@kill) 
Run Code Online (Sandbox Code Playgroud)

任务的最新等待类型是CMEMTHREAD。我无法使用不同的名称恢复数据库,因为有一个应用程序在使用它,该应用程序在应用程序中具有硬编码的数据库名称。

如果需要,我可以删除和恢复数据库。我该如何解决这个问题???它被暂停。没有阻塞。

恐怕如果我重新启动服务,它只会在启动时进行回滚。

任何帮助是极大的赞赏!我一生中从未见过这样的事情......

sql-server backup sql-server-2012

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