标签: sql-server

备份或恢复被中止 - 可能是什么?

use master
go
ALTER DATABASE Apcore SET SINGLE_USER WITH ROLLBACK IMMEDIATE 

RESTORE DATABASE Apcore
FROM DISK=N'C:\Backups\QG-V-SQL-TS$AIFS_DEVELOPMENT_APCore_FULL_20180909_230034.bak'
WITH  FILE = 1,  
MOVE N'APCoreDataPrimary' TO N'C:\Program Files\Microsoft SQL Server\MSSQL13.DEVELOPMENT\MSSQL\DATA\APCoreDataPrimary.mdf',
MOVE N'APCoreData1' TO N'C:\Program Files\Microsoft SQL Server\MSSQL13.DEVELOPMENT\MSSQL\DATA\APCoreData1.ndf',
MOVE N'APCoreData_nonclusteredIndexes' TO N'C:\Program Files\Microsoft SQL Server\MSSQL13.DEVELOPMENT\MSSQL\DATA\APCoreData_nonclusteredIndexes.ndf',  
MOVE N'APCoreLog_log' TO N'C:\Program Files\Microsoft SQL Server\MSSQL13.DEVELOPMENT\MSSQL\DATA\APCoreLog_log.ldf',  
recovery,  NOUNLOAD,  REPLACE,  STATS = 1
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

在开发人员的机器上恢复数据库时,出现上述错误。

我这样做的方式是:

  • 首先让我说我不担心 - 权限、索引、触发器、同义词等。
  • 我将备份文件(小于 1 GB)从 live 复制到她的本地机器
  • 做了restore filelestonly这是确定
  • 我不得不将数据库设置为 single_user 模式,因为有一些服务每秒钟都在尝试使用它
  • 准备好上面的脚本,并在运行它时收到该错误消息。

会是什么呢?

在此处输入图片说明

sql-server backup restore sql-server-2016

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

RID 查找与密钥查找之间的性能差异?

非聚集索引使用聚集索引的键定位行与该表没有聚集索引且非聚集索引通过 RID 定位行之间是否存在性能差异?

不同级别的碎片是否也会影响这种性能比较?(例如,在这两种情况下,表的碎片率为 0%、50%、100%。)

performance sql-server clustered-index nonclustered-index bookmark-lookup performance-tuning

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

如何从列表中填充中央管理服务器注册

我需要从我域中的所有实例中删除用户。

为了做到这一点,我想创建一个 CMS 组并对其执行查询。问题是我要添加 150 多台服务器。如何将服务器批量添加到组中而不是手动添加?

sql-server central-management-server

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

存储过程使用的 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
查看次数

使用游标如果存在则更新,如果不存在则插入

我正在尝试写一个游标。我创建了一个表,用于从 sys.dm_exec_sessions 捕获登录名和时间。现在,我需要编写一个游标,以便在登录名已存在的情况下将登录时间更新为上次登录时间,并在表中不存在登录名的情况下插入一行。我想出了以下方法,但不幸的是,我收到一个错误,子查询返回多个值。有任何想法吗???

declare @log as varchar(200)
declare @log_time as datetime
declare LoginsSize cursor for
        SELECT  login_name, login_time
        FROM sys.dm_exec_sessions 
open LoginsSize
            fetch next from LoginsSize into @log, @log_time
            while( @@fetch_status = 0)
        begin                                                           
          If (Select Login from [dbo].[LoginsForDBUserList])  = @log 

             Begin
             UPDATE  [dbo].[LoginsForDBUserList]
             SET     LastLoginTime = @log_time
             WHERE   [login]= @log
             END

             Else 

             Begin
             Insert Into [dbo].[LoginsForDBUserList]
             SELECT  login_name, login_time
             FROM sys.dm_exec_sessions
             END

        fetch next from LoginsSize into @log, @log_time
        close LoginsSize
        deallocate LoginsSize

end
Run Code Online (Sandbox Code Playgroud)

sql-server cursors

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

连接池错误

我从我的 .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
查看次数