小编Ken*_*her的帖子

为什么 MSDB 数据库值得信赖?

TRUSTWORTHY如果您不小心,该设置可能会相当危险,除特定情况外,建议将其关闭。但是默认情况下,MSDB数据库TRUSTWORHTY设置ON默认。我很好奇为什么?

我已阅读BOL 中的此条目

注意默认情况下,MSDB 数据库的 TRUSTWORTHY 设置设置为 ON。更改此设置的默认值可能会导致使用 M​​SDB 数据库的 SQL Server 组件出现意外行为。

但我对具体情况很好奇。为什么具体MSDB需要TRUSTWORTHY开启?什么功能使用它?

security sql-server sql-server-2008-r2 sql-server-2012 sql-server-2014

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

托管 SQL Server 的 VM 上的专用资源

我的理解是,使用 VM 的一大好处是您可以在主机上的虚拟机之间共享资源。因此,您可以拥有一个拥有 120 个 CPU 的主机,并在其上放置 5 个虚拟机,每个虚拟机拥有 32 个 CPU。额外的 CPU 在 VM 之间“共享”,主机根据需要动态分配 CPU。内存也是一样。

我也明白,对于装有 SQL Server 的 VM 来说,这是一个很大的禁忌,但我的 VM 管理员不同意。有没有人以一种或另一种方式有任何证据或文件?

我不知道这是否重要,但我们正在使用 VMWare。

sql-server vmware virtualisation

8
推荐指数
3
解决办法
1382
查看次数

行计数显示在对象资源管理器详细信息上所需的权限

我有一个奇怪的安全问题。我有一个用户在 SQL 2016 服务器上使用 SSMS 18.2。他们是 db_datareader 的成员,但是当他们在 Object Explorer Details 中拉出Row Count列时,它是空白的。尽我所知,它需要 DBO 才能显示行数。

具有读取权限的用户: 在此处输入图片说明

具有 dbo 访问权限的用户: 在此处输入图片说明

这是一个错误还是故意的?有谁知道是否有较低级别的权限可以提供此行数?我知道有很多其他方法可以获得行数,例如sys.partitions,但是用户坚持认为他们想要使用 OED 窗口。

sql-server permissions ssms sql-server-2016

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

OUTPUT 子句可以创建表吗?

我正在做这样的更新:

UPDATE dbo.Table1
SET BirthDate = b.BirthDate
FROM Table1 a
JOIN Table2 b
    ON a.ID = b.ID
Run Code Online (Sandbox Code Playgroud)

我想使用 OUTPUT 子句来备份我的更改。

UPDATE dbo.Table1
SET BirthDate = b.BirthDate
OUTPUT 
    inserted.Id, inserted.BirthDate AS New_BirthDate, 
    deleted.BirthDate AS Old_BirthDate
    INTO OutputTable
FROM Table1 a
JOIN Table2 b
    ON a.ID = b.ID
Run Code Online (Sandbox Code Playgroud)

我想知道的是 OUTPUT 子句是否有办法创建表 OutputTable 或者我是否必须在运行语句之前确保它已经存在?

sql-server-2008 sql-server output-clause

7
推荐指数
2
解决办法
4676
查看次数

使用 SSIS 从 Excel 导入大列(8000 个字符)

我正在尝试设置定期导入我们从供应商处获得的 Excel 电子表格。我正在使用 SQL 2008 R2 SSIS 将其导入表中。问题连接管理器是到电子表格的 OLE DB 连接。电子表格是 Excel 2005。数据库连接管理器使用 Native OLE DB\SQL Native Client。

我遇到的问题是 OLE DB 源不断将几个 excel 列设置DT_WSTR为一个255长度。但是,我有 2 列,分别为 4000 和 8000 个字符。我已经进入OLE DB 源的Advanced Editor/Input and Output Properties选项卡并更改了External Columns列表和Output Columns列表中的数据类型/长度。不幸的是,当我离开时Advanced Editor,错误列表中会出现错误。

Validation error. Data Flow Task: Data Flow Task: The output column "ColumnName" (226)
on the error output has properties that do not match the properties of its …
Run Code Online (Sandbox Code Playgroud)

sql-server etl ssis sql-server-2008-r2 excel

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

Unicode 字符的模式匹配问题

我正在编写一段对 unicode 字符使用模式匹配的代码,但我遇到了一个奇怪的问题。有些字符有效,有些则无效。

DECLARE @Pattern nvarchar(50) = N'%[^a-z]%' -- Simple pattern
SELECT PatIndex(@Pattern, nchar(46797)), nchar(46797) -- Works
SELECT PatIndex(@Pattern, nchar(14843)), nchar(14843) -- Doesn't Work
Run Code Online (Sandbox Code Playgroud)

该模式应该适用于任何不是 az 的字符,但由于某种原因它没有捕捉到某些字符。有谁知道为什么某些 unicode 字符会匹配而其他字符则不会?

sql-server pattern-matching sql-server-2014 unicode

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

BULK INSERT 在我有权访问的文件上收到“无法批量加载,因为......访问被拒绝”

我正在尝试运行 BULK INSERT,但出现访问被拒绝错误。到目前为止,我已经尝试了以下方法:

  • 我可以从我的机器打开文件
  • 我使用 windows auth 登录到 SQL Server(尝试过 v2008 R2 和 v2016)
  • 我有系统管理员权限
  • 我可以type使用 xp_cmdshell 文件(使用 SQL 服务帐户,但它消除了它是防火墙的想法)
  • 路径是网络 URL,而不是本地驱动器

我使用的命令是这样的:

BULK INSERT ken_temp
FROM '\\network_path\temp\kdf\text_file.txt'
WITH
   (
    FIELDTERMINATOR = ',', ROWTERMINATOR = '\n'
   ,ROWS_PER_BATCH = 50000
   ,MAXERRORS = 10
   )
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

sql-server sql-server-2008-r2 sql-server-2016 bulk-insert

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

Blocking_session_id 怎么可能是负 2?

我有一个案例,我正在运行的查询需要很长时间。当我检查sys.dm_exec_requestsblocking_session_id是一个负值时,具体来说是-2。等待是一个LCK_M_X,阻塞的命令是一个DELETE语句。据我所知,目前没有其他东西触及那张桌子。事实上,唯一的活动请求是被阻止的连接和查询检查sys.dm_exec_requests。当我查看sys.dm_tran_session_transactions被阻止的会话时,只有一个出现。

sql-server-2008 sql-server blocking

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

用户 DEFAULT_SCHEMA 如何设置为“dbo”以外的其他内容

SQL Server 用户的设置之一是DEFAULT_SCHEMA. 这是经常dbo但并非总是如此。我意识到您可以使用以下代码更改设置:

ALTER USER [UserName] WITH DEFAULT_SCHEMA = [SchemaName]
Run Code Online (Sandbox Code Playgroud)

据我所知,无论何时我创建 aUSER并且不指定DEFAULT_SCHEMA它使用的 a dbo。但我仍然发现USERS它具有不同的默认架构。

如果我没记错的话,当您有一个从 SQL 2000 升级的实例时,默认架构是与用户名匹配的架构。我猜这就是我所看到的大部分(如果不是全部)的来源。

有没有其他方法可以在USER不指定的情况下创建 aDEFAULT_SCHEMA并使用除 之外的其他内容创建它dbo

注意:这适用于 SQL Server 2005 及更高版本。

schema security sql-server

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

将 TDE 数据库移动到新数据库但证书有问题

这是我第一次使用 TDE,所以希望我没有做任何可怕的错误。

我正在尝试将我的 TDE 数据库从一台服务器移动到另一台服务器。我在新服务器的主数据库上创建了一个主密钥。然后我使用以下命令从备份中恢复了我的证书:

CREATE CERTIFICATE MyServerCert
FROM FILE = 'CertBackupFile'
Run Code Online (Sandbox Code Playgroud)

当我最初创建它时,我没有私人加密密钥,所以我只是用密码对其进行了加密。

现在,当我尝试恢复 TDE 的备份时,出现以下错误

Msg 15507, Level 16, State 1, Line 2
A key required by this operation appears to be corrupted.
Msg 3013, Level 16, State 1, Line 2
RESTORE DATABASE is terminating abnormally.
Run Code Online (Sandbox Code Playgroud)

我试过查看 create 语句,但看不到我可以在哪里输入原始密码。此外,当我查看原始服务器上的 sys.certificates pvt_key_encryption_type_desc = ENCRYPTED_BY_MASTER_KEY 时,但在新服务器上显示 NO_PRIVATE_KEY。所以我认为我在创建时做错了。

谁能指出我正确的方向来解决这个问题?

sql-server-2008-r2 transparent-data-encryption

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