标签: sql-server

如何确定哪个是我在 MS SQL Server 中的默认实例?

我的服务器中有两个实例,我想知道其中哪一个是默认实例。请你指出我可以识别它的方法。通过说默认实例,我的意思是监听 1433 的实例。

谢谢您的支持。

sql-server instance

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

Active Directory 无法通过 SQL 服务器管理工​​作室工作

我在 SQL Server 中创建了一个组,并向其中添加了一个包含用户的 Active Directory 组。

当我尝试通过 Windows 身份验证登录时,出现以下错误:

Login failed for user 'UserName'. (Microsoft SQL Server, Error: 18456)
Run Code Online (Sandbox Code Playgroud)

但是当我只添加一个与组分开的 AD 用户时,登录没有问题。

为什么只有添加为登录名的组才能登录?

我曾尝试将 Active Directory 设置从全局类型更改为通用类型,但这并没有改变任何内容

在此处输入图片说明

这在 Windows 2016 服务器计算机和 SQL Server 2017 上。

sql-server ssms active-directory sql-server-2017

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

存储过程作为所有者执行关闭数据库连接不起作用

我创建了一个存储过程,允许用户在 QA 环境中关闭所有数据库连接。我是 SA 并创建了程序。

当我修改 SP 时,在没有“以所有者身份执行”的情况下运行它,我得到了结果。当我添加“以所有者身份执行”时,我没有收到任何结果。

试图理解为什么。

create procedure [dbo].[DatabaseConnectionClose]
    @DatabaseName varchar(255)
with execute as owner
as


DECLARE @kill varchar(8000) = '';  
SELECT @kill = @kill + 'kill ' + CONVERT(varchar(5), session_id) + ';'  
FROM sys.dm_exec_sessions
WHERE database_id  = db_id(@DatabaseName)

select @kill as CloseConnectionScript

EXEC(@kill);
Run Code Online (Sandbox Code Playgroud)

sql-server permissions sql-server-2012 connections impersonation

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

SQL 如何将单租户数据库转换为多租户数据库

我们有一个遗留应用程序。出于某种原因,有人决定为每个客户创建一个数据库。所以我们有 500 多个具有相同架构的数据库。

我想转换成一个多客户端数据库。原始客户数据库没有 CustomerId。新的单一数据库确实如此。

我们正在考虑用视图替换旧的数据库,因此旧的应用程序插入/更新仍然可以工作。

老客户数据库:

CREATE TABLE [CustomerOne].[dbo].[CustomerTransaction]
(
    [CustomerTransactionid] [int] identity(1,1) primary key NOT NULL,
    [QuantityBought] [int] NULL,
)
Run Code Online (Sandbox Code Playgroud)

新报告数据库具有 CustomerId:

CREATE TABLE ReportingDB.[dbo].[CustomerTransaction]
(
    [CustomerTransactionid] [int] identity(1,1) primary key NOT NULL,
    [Customerid] [int] NOT NULL,
    [QuantityBought] [int] NULL,
)
Run Code Online (Sandbox Code Playgroud)

用视图替换旧数据库

create view [CustomerOne].[dbo].[CustomerTransaction]
as
select 
    [CustomerTransactionid]
    ,1 as [CustomerId]
    ,[quantitybought]
from ReportingDB.[dbo].[CustomerTransaction]
where Customerid = 1
with check option
Run Code Online (Sandbox Code Playgroud)

这失败:

-- Attempt inserting into View
insert into CustomerOne.dbo.Customertransaction 
(Quantitybought)
values (4)

Msg 515, Level 16, State …
Run Code Online (Sandbox Code Playgroud)

sql-server-2008 database-design sql-server sql-server-2012 sql-server-2016

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

在 1.06 亿行表上创建索引

我有一个在全球安装的应用程序,它使用从 SQL Server 2008 Express 到 SQL Server 2017 Enterprise 版的 SQL 版本。

我尝试了几种方法在一个大表上创建索引(3 列,包含 3 列),其中数据库通常处于简单恢复模式,但可以作为完整恢复模式......硬件可能因客户而异其他:

  1. 更改表创建索引...
  2. 使用新索引创建一个 tmp 表,并使用“插入”复制数据,然后复制原始表的删除表,并重命名 tmp 表以替换原始表。
  3. 使用新索引创建一个 tmp 表,并使用 PowerShell 脚本复制数据,然后是原始表的删除表,并重命名 tmp 表以替换原始表。

3 个中最快的是第一个选项(创建非聚集索引的传统方法),它花费了 1 小时 15 分钟来处理超过 1.06 亿条记录(该表有 200 列……不理想,但这是我正在使用的) ) 其他选项花费了三倍甚至更多的时间)

不幸的是,我无法使用在线功能,因为有多种 SQL Server 版本,并且在线仅适用于企业版。

在我的实验室中 1 小时 15 分钟太长了,我想尝试找到另一种方法来减少它,特别是在我们下一次应用程序更新中,我们将需要创建 23 个索引......而我没有' t 看到需要 5-6 小时的更新,客户也不想等待 5-6 小时来更新软件。

此外,更新过程中不需要对数据库进行任何活动。

我正在寻找的只是我可以尝试在合理的时间内创建索引的想法。没有代码!只需要理论的想法。

任何想法将不胜感激。

index sql-server

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

使用 mssql-conf 设置的值列出 Microsoft SQL Server 配置?

该实用程序mssql-conf中/opt/mssql/bin/mssql-conf有设定list,它告诉你可能的密钥,

$ sudo ./mssql-conf list
control.alternatewritethrough              Enable optimized write through flush for O_DSYNC requests
control.hestacksize                        Host extension stack size in KB
control.writethrough                       Use O_DSYNC for file flag write through requests
coredump.captureminiandfull                Capture both mini and full core dumps
coredump.coredumptype                      Core dump type to capture: mini, miniplus, filtered, full
filelocation.defaultbackupdir              Default directory for backup files
filelocation.defaultdatadir                Default directory for data files
filelocation.defaultdumpdir                Default directory for crash dump files
filelocation.defaultlogdir                 Default directory for log …
Run Code Online (Sandbox Code Playgroud)

sql-server linux configuration

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

当 x 为空时,为什么 x <> 1 为假?

我有一个查询,当field1 <> 10.

当field1为空时,这个谓词是false!

根据我的原始数学,如果null <> 10 = false,则10 = null。

这样做的理由是什么?

sql-server t-sql

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

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

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
查看次数