小编Aar*_*and的帖子

用户作为系统管理员通过 Excel 连接到 SQL Server 的潜在风险?

我最近发现大部分财务部门正在使用 Excel 连接到我的 SQL Server 2000 实例,并使用 sysadmin 角色的帐户。我目前应该立即向权力机构传达哪些风险?

security sql-server

8
推荐指数
4
解决办法
2061
查看次数

何时禁用并重新启用表触发器?

我需要知道表触发器的启用/禁用历史记录是否由 SQL Server 本地跟踪。

我查看了系统视图:
• [sys].[triggers] 包含一个 modify_date 字段
• [sys].[trigger_events] 关注触发器 INSERT/UPDATE/DELETE 事件

您能否推荐有关触发历史记录的任何其他信息来源?

trigger sql-server

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

保存视图时如何防止 SSMS 重写我的代码?

我正在创建一个视图,该视图使用带有WHERE类似于此子句的语句:

WHERE
    (
        col1 IS NOT NULL
        OR
        col2 IS NOT NULL
    )
    AND
    NOT EXISTS (SELECT ...)
Run Code Online (Sandbox Code Playgroud)

运行平均需要 10 秒。但是,当我尝试将此查询保存为视图时,SQL Server(或 MS SQL Server Management Studio 客户端)会“优化”查询以使用此结构,而不是:

WHERE
    (col1 IS NOT NULL AND NOT EXISTS (SELECT ...))
    OR
    (col2 IS NOT NULL AND NOT EXISTS (SELECT ...))
Run Code Online (Sandbox Code Playgroud)

将查询减慢到 6 分钟以上。有什么方法可以禁用此行为,以便视图完全使用我提供的 SQL 查询?

sql-server sql-server-2008-r2

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

可用性组如何处理计划作业和 SSIS 包?

我在 AlwaysOn 可用性组中设置了 2 个 SQL Server。

我还设置了针对数据库运行的作业。在故障转移期间,我如何确保作业将继续在辅助服务器上运行?我是否需要在两台机器上安装作业和 SSIS 包并在辅助机器上手动禁用它们...然后在故障转移的情况下手动启用它们?或者是否有内置功能来处理这个问题?

sql-server sql-server-2012 sql-server-agent availability-groups

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

SQL Server Management Studio Express 可以独立安装吗?

我想知道 SQL Server Management Studio Express(主要用于 Microsoft SQL Server)是否安装在独立机器上(没有任何 SQL 服务和东西)以连接到远程数据库?

我运行的是 SQL Server 2012;我的一位经理告诉我,他们希望我为指定用户创建一个 Web UI 来运行查询/更新数据库;这在我的 PHP 能力范围内;但我想为方便起见,我可以提议取消对 Web UI 的需求,因为这将花费我们的服务器管理员大量时间,但是在我们的网络机器上安装 SMSE 以连接/管理我们的数据库?

这可能吗?或者我是否必须经历创建一个显示模式、表格等的 WebUI 的痛苦任务。

sql-server ssms sql-server-2012

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

还原备份失败 - 磁盘空间不足

我有一个大约 6Gb 的备份。它是原始文件的“轻量级”备份(清除了日志表),大约为 14Gb。

我尝试在我的 SQL Express 本地服务器上恢复备份。它失败并显示类似 : 的消息System.Data.SqlClient.Error: insufficient disk space。它要求 227,891,019,776 字节,这绝对是疯狂的,几乎和我的整个硬盘一样大。

正如在其他网站上发现的那样,我尝试了RESTORE FILELISTONLY FROM DISK = 'backupfile.bak'.

数据文件(列Size)的大小为 6,888,226,816,但日志文件的大小为 221,006,987,264。该列BackupSizeInBytes返回 6,259,736,576 和 0。

因此,如果我理解正确,则在继续之前,恢复检查我是否有足够的空间来恢复日志文件的“理论”大小,而忽略实际的日志文件大小?

我怎样才能绕过它?获得备份有点困难,所以如果我能在不返回生产服务器的情况下解决我的问题,那就太好了。

谢谢 !

哦顺便说一句,我在 SQL Server 2008 R2 Express 上。

sql-server backup disk-space restore sql-server-express

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

为什么计划缓存包含估计的而不是实际的执行计划?

我可以想到在计划缓存中存储估计计划而不是实际计划的决定背后的许多原因。但我找不到“正确”的答案。

sql-server execution-plan plan-cache

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

损坏的 tempdb 位置并且无法恢复

犯了一个错误,错误地为 tempdb 输入了一个更改数据库命令。

现在实例不会启动。我无法使用 -m 在单用户模式下启动,因为它指出找不到 tempdb。我尝试使用:

net start msqsqlserver /f /t3608
Run Code Online (Sandbox Code Playgroud)

但是我实际上根本无法使用sqlcmd或连接到实例ssms

sql-server-2008-r2 tempdb disaster-recovery

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

将与表相关的条件放在 JOIN 中更好?

我已经看到很多人将与表相关的条件放在 JOIN 子句上。看这个例子,

SELECT i.Name
  FROM sys.TABLES AS tbl
  INNER JOIN sys.indexes AS i
    ON (i.index_id > 0 AND i.is_hypothetical = 0) 
    AND (i.object_id = tbl.object_id)
  WHERE (i.is_unique = 1 AND i.is_disabled = 0) 
    AND (tbl.Name = 'Warehouse')


SELECT i.Name
  FROM sys.TABLES AS tbl
  INNER JOIN sys.indexes AS i
    ON (i.object_id = tbl.object_id)
  WHERE (i.index_id > 0 AND i.is_hypothetical = 0) 
  AND (i.is_unique = 1 AND i.is_disabled = 0) 
  AND (tbl.Name = 'Warehouse')
Run Code Online (Sandbox Code Playgroud)

查询相同,但不同之处在于,第一个(i.index_id > 0 AND i.is_hypothetical = …

sql-server sql-server-2012

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

在 IF EXISTS 查询中使用 CTE

是否可以在 SQL Server 2012 中执行类似于以下操作?

IF EXISTS (
    WITH DATA AS (
        SELECT *, 
        ROW_NUMBER() OVER(PARTITION BY column ORDER BY Column) AS rn
        FROM table )
    SELECT *
    FROM DATA
    WHERE rn = 2 )
BEGIN
...
END
Run Code Online (Sandbox Code Playgroud)

我尝试使用此语法并收到错误消息。如果这是不可能的,使用临时表是实现此目的的最佳方法吗?

sql-server cte

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