TRUSTWORTHY如果您不小心,该设置可能会相当危险,除特定情况外,建议将其关闭。但是默认情况下,MSDB数据库TRUSTWORHTY设置ON默认。我很好奇为什么?
我已阅读BOL 中的此条目
注意默认情况下,MSDB 数据库的 TRUSTWORTHY 设置设置为 ON。更改此设置的默认值可能会导致使用 MSDB 数据库的 SQL Server 组件出现意外行为。
但我对具体情况很好奇。为什么具体MSDB需要TRUSTWORTHY开启?什么功能使用它?
security sql-server sql-server-2008-r2 sql-server-2012 sql-server-2014
我的理解是,使用 VM 的一大好处是您可以在主机上的虚拟机之间共享资源。因此,您可以拥有一个拥有 120 个 CPU 的主机,并在其上放置 5 个虚拟机,每个虚拟机拥有 32 个 CPU。额外的 CPU 在 VM 之间“共享”,主机根据需要动态分配 CPU。内存也是一样。
我也明白,对于装有 SQL Server 的 VM 来说,这是一个很大的禁忌,但我的 VM 管理员不同意。有没有人以一种或另一种方式有任何证据或文件?
我不知道这是否重要,但我们正在使用 VMWare。
我有一个奇怪的安全问题。我有一个用户在 SQL 2016 服务器上使用 SSMS 18.2。他们是 db_datareader 的成员,但是当他们在 Object Explorer Details 中拉出Row Count列时,它是空白的。尽我所知,它需要 DBO 才能显示行数。
这是一个错误还是故意的?有谁知道是否有较低级别的权限可以提供此行数?我知道有很多其他方法可以获得行数,例如sys.partitions,但是用户坚持认为他们想要使用 OED 窗口。
我正在做这样的更新:
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 或者我是否必须在运行语句之前确保它已经存在?
我正在尝试设置定期导入我们从供应商处获得的 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) 我正在编写一段对 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 字符会匹配而其他字符则不会?
我正在尝试运行 BULK INSERT,但出现访问被拒绝错误。到目前为止,我已经尝试了以下方法:
type使用 xp_cmdshell 文件(使用 SQL 服务帐户,但它消除了它是防火墙的想法)我使用的命令是这样的:
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)
有任何想法吗?
我有一个案例,我正在运行的查询需要很长时间。当我检查sys.dm_exec_requests它blocking_session_id是一个负值时,具体来说是-2。等待是一个LCK_M_X,阻塞的命令是一个DELETE语句。据我所知,目前没有其他东西触及那张桌子。事实上,唯一的活动请求是被阻止的连接和查询检查sys.dm_exec_requests。当我查看sys.dm_tran_session_transactions被阻止的会话时,只有一个出现。
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 及更高版本。
这是我第一次使用 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 ×9
security ×2
blocking ×1
bulk-insert ×1
etl ×1
excel ×1
permissions ×1
schema ×1
ssis ×1
ssms ×1
transparent-data-encryption ×1
unicode ×1
vmware ×1