小编SQL*_*ood的帖子

驱动器与安装点?

以前的高级 DBA 为我们整个公司的每个 SQL Server 中的所有驱动器设置了挂载点。新的高级 DBA被挂载点吓坏了想改变我们的标准(我认为主要是因为他没有使用它们的经验)。

根据大量 Internet 搜索的结果,我找不到任何(SQL Server 2000 后)不使用挂载点的理由。

有没有人知道有关此主题的 Windows 操作系统限制?

  • 我最近经常听到“操作系统无法识别挂载点”的说法。(不真实,基于我对我们使用的 Windows Server 版本的研究)。

是否有任何基于证据或经验的理由不将挂载点与 SQL Server 一起使用?

  • 假设用完驱动器号对我们来说不是问题。

我的理解是挂载点对于隔离工作负载非常有用。

任何人都可以确认或反驳我的理解,挂载点实际上比一个驱动器更有效地隔离/隔离不同类型的数据和日志文件(系统数据库文件、用户数据库文件、tempDB)的数据文件、日志文件和 tempdb ?

sql-server storage architecture mount-point

13
推荐指数
3
解决办法
9216
查看次数

为什么SESSION_USER返回dbo而不是SQL登录?

我在 GP 表上有一个触发器,用于记录关键字段何时更改以及谁更改了它。下面是触发器的示例。

CREATE TRIGGER [dbo].[TRACKAPP_UPDATE] ON [dbo].[Table]
AFTER UPDATE
AS
DECLARE @MDFUSRID   char(15)
DECLARE @SOPNUMBE   char(32)
DECLARE @DOCSTATUS  INT

BEGIN
BEGIN
IF UPDATE(DOCSTATUS)
BEGIN
    SELECT @MDFUSRID = SESSION_USER
    SELECT @SOPNUMBE = SOPNUMBE FROM inserted
    SELECT @DOCSTATUS = DOCSTATUS FROM INSERTED
Run Code Online (Sandbox Code Playgroud)

在 99% 的情况下,这会返回更改该字段的用户的正确名称。如果任何 ERP 人员更改了某个字段(包括我自己),用户就会显示 dbo。我一直认为这是一个访问问题。然而,我们发现一些用户也以 dbo 而不是他们的名字返回。

在此输入图像描述

您对我应该从哪里开始寻找有什么建议吗?

trigger security sql-server

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

避免系统管理员权限

我将开始道歉,因为这是我的第一篇文章,并查看其他与我自己的情况不太匹配的问题,而且我是一名系统管理员,而不是 DBA,所以我对 SQL 的理解是生疏和有限的。

我的组织经常遇到供应商,他们为了运行他们的应用程序,他们执行我们所说的惰性编程并请求 SA 凭据或要求他们的自定义帐户具有系统管理员权限。我的组织也有数据保护/合规政策,要求我们仅授予所需的访问权限和权利。

最近,我与之合作的一个供应商希望他们的帐户是系统管理员,但它实际上只需要访问一个数据库。如果我们给 AD 帐户(因为他们的应用程序仅适用于 Windows 身份验证)系统管理员权限,我可以使用应用程序的 GUI 来浏览和选择数据库,但如果我们只将同一帐户设置为 DBOwner,我们将找不到任何东西。

有没有办法确定它是否正在尝试轮询其他数据库或确定所需数据库所需的最低权限级别是什么?当我尝试询问供应商时,我被告知:“它需要系统管理员权限,但没关系,因为它只访问一个数据库。” 当涉及到我们的政策时,这是不行的。

感谢您的任何建议。

security sql-server permissions sysdba

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

如何在 SQL Server 中将数据转换为适当的大小写

SQL Server 包含用于查看/更新字符串数据为大写和小写但不正确大小写的系统函数。希望此操作发生在 SQL Server 中而不是在应用程序层中的原因有多种。就我而言,我们在整合来自多个来源的全球 HR 数据期间执行了一些数据清理。

如果您在 Internet 上搜索,您会发现此任务的多种解决方案,但许多解决方案似乎都有限制性警告或不允许在函数中定义异常。

注意:正如下面的评论中提到的,SQL Server 不是执行此转换的理想场所。还建议了其他方法 - 例如 CLR。在我看来,这篇文章已经达到了它的目的——将所有这些想法集中在一个地方,而不是随处可见的随机花絮。谢谢你们。

sql-server t-sql functions

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

开发实例上的“SSIS 评估期已过期”?

我最近开始在开发服务器上收到以下错误。曾经在这里安装了 SQL Server 2016 CTP,但从那时起我们就进行了升级。我试过卸载/重新安装 SSIS 以及修复它。一路上发生了重启。对于我的生活,我无法弄清楚为什么这个错误仍然存​​在。

我已经使用以下方法验证了DTExec.exe位于 SQL Server 预期的位置:

SELECT * FROM msdb.dbo.syssubsystems
Run Code Online (Sandbox Code Playgroud)

...而且它没有引用DTExec.exe以前安装在服务器上的其他版本。

还有什么我可以尝试清除这个所谓的评估期吗?

以用户身份执行:(Domain\SQLServiceAccount)。
适用于 64 位的 Microsoft (R) SQL Server 执行包实用程序版本 13.0.1601.5 版权所有 (C) 2016 Microsoft。版权所有。
开始时间
:11:00:01 PM错误:2017-01-03 23:00:54.81 代码:0xC0000033 来源:XXXX ETL XXXX
描述:Integration Services 评估期已过。
结束错误
错误:2017-01-03 23:00:57.39 代码:0xC0000033 来源:XXXX ETL XXXX
说明:Integration Services 评估期已过。
结束错误
由于错误 0xC0000033,无法执行包。

实例的其余部分很好。只有 SSIS 会产生“评估期已过”错误消息。

也许有人不小心使用了评估版来设置 SSIS?也许,但如果是这种情况,您会认为卸载并随后重新安装(使用开发版安装工具包)该服务可以解决该问题。

sql-server ssis troubleshooting sql-server-2016

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

1000 MB 与 1024 MB

是否有任何关于 1 GB = 1000 MB 或 1024 MB 的权威文档参考 1) 磁盘空间和/或 2) RAM?根据我的研究,1 GB 的“官方”细分曾经是 1024,但最近(相对而言)更改为 1000。

在数据库管理领域是否更准确?还是仅仅取决于上下文?

sql-server memory configuration disk-space

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

进行日志备份,截断日志,然后删除 tlog 备份会破坏 LSN 链吗?

我们有 avamar 工具在我的环境中进行备份。avamar 的备份计划是每天只进行一次反式备份。我正在说服他们更频繁地进行反式备份。但与此同时,由于这种不频繁的跨备份,我必须处理大日志。因此,为了减少日志大小,我进行了快速跨备份,然后是截断日志大小。现在我想知道这样做是否会破坏 avamar 的日志链,并强制它完全备份。请记住,我会在截断日志大小后立即删除 trans 备份文件。我删除 trans 备份文件这一事实是否会破坏 Avamar 的日志链?任何输入表示赞赏。

sql-server backup transaction-log

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

将数据库备份到新文件夹中

我正在编写一个脚本,该脚本将创建一个新文件夹并将所有数据库备份到该文件夹​​中。该脚本将生成新文件夹,但不会将备份保存到该文件夹​​中。我不确定我错过了什么。先感谢您。

DECLARE @name VARCHAR(50) -- database name  
DECLARE @path VARCHAR(256) -- path for backup files  
DECLARE @fileName VARCHAR(256) -- filename for backup  
DECLARE @fileDate VARCHAR(20) -- used for file name
DECLARE @DirTree TABLE (subdirectory nvarchar(255), depth INT)


SELECT @fileDate = CONVERT(VARCHAR(20),GETDATE(),112) 


SET @path = '\\noc2-storage\IT_Backup\Weekly_SQL\CDADB1\' + @fileDate;


DECLARE db_cursor CURSOR FOR  
SELECT name 
FROM master.dbo.sysdatabases 
WHERE name NOT IN ('master','model','msdb','tempdb')  -- exclude these databases


OPEN db_cursor   
FETCH NEXT FROM db_cursor INTO @name   


WHILE @@FETCH_STATUS = 0   
BEGIN   
IF NOT EXISTS …
Run Code Online (Sandbox Code Playgroud)

sql-server backup

0
推荐指数
1
解决办法
1185
查看次数