当一个事务在 SQL Server 中打开时,它可以回滚的所有方式是什么?我们目前正在使用一个 3rd 方应用程序,该应用程序经常在查询处于睡眠状态时显示打开的事务,有时会持续数天(通过 sp_WhoIsActive 显示)。这使我相信应用程序中某处存在错误,不允许提交事务。这些事务可能回滚的所有方式是什么?
我应该对已经打开数小时或数天的交易做些什么吗?如果他们无论如何都要回滚或超时,那么终止进程有什么害处吗?
最近,我一直在 SQL Server 日志中看到错误。
代码:3930 描述:“当前事务无法提交,无法支持写入日志文件的操作。回滚事务。”
使用 SQL Profiler,如何找到导致此错误的确切语句?SQL Profiler 中的哪一列填充了 SQL 错误日志中的“消息”列?不幸的是,我们只在生产中得到这个,所以我需要在那里运行一个尽可能轻量级的跟踪。你们推荐什么来捕获有问题的代码?
在 SQL Server 中,我通常将最大服务器内存设置设置为流行的最佳实践之一,例如保留 10% 或 4GB,以较高者为准。
http://www.brentozar.com/archive/2012/11/how-to-set-sql-server-max-memory-for-vmware/
我有一台带有 64GB RAM 的新服务器。由于许可限制,此服务器必须运行 SQL Server 数据库引擎、SSIS 和 SSAS。SSIS ETL 发生在一夜之间,用户主要在白天访问实际数据库。在这种情况下,是否最好保留默认设置,以便 SSIS 可以在需要时占用内存,然后数据库引擎可以在需要时占用内存?
适用于 Windows 的 Power BI Desktop 应用程序是免费的,这很棒。然而,微软网站上充斥着有关共享/查看 Power BI 内容的许可的讨论。这仅适用于他们托管的 Power BI服务吗?
我想在 Power BI Desktop 中创建报表,并将其分发为 .pbix 文件。我有什么理由不能不付一毛钱就分发这些东西吗?我意识到 Microsoft 的目标是让人们使用其托管的 Power BI 服务,但使用 Power BI Desktop(免费应用程序)免费分发内容似乎也确实如此。
我正在整合一些 SQL Server 以简化管理。我正在考虑使用 SQL Server 2005/2008R2/2012 的新 VM,每个 VM 作为同一台机器上的单独命名实例。这台机器将仅用于“沙盒”环境,主要用于测试我们备份的恢复。没有应用程序会遇到这个问题。
我可能会遇到多个版本的问题吗?我记得几年前在同一台机器上使用 SQL 2000/2005 时遇到过问题。你们是否使用单独的机器进行恢复测试?
我们的开发团队创建了一些 SSRS 报告,这些报告仅从每个数据库中检索元数据(非“真实”数据)。我试图将运行这些报告的服务帐户锁定到所需的最低权限。
查询仅从每个数据库中的系统表中进行选择,例如:
sys.tables
sys.extended_properties
SYS.objects
SYS.schemas
sys.dm_db_partition_stats
sys.indexes
Run Code Online (Sandbox Code Playgroud)
我认为以下会做到这一点,但没有这样的运气。
GRANT VIEW ANY DATABASE TO [DOMAIN\LOGIN]
GRANT VIEW SERVER STATE TO [DOMAIN\LOGIN]
GRANT VIEW DATABASE STATE TO [DOMAIN\LOGIN]
Run Code Online (Sandbox Code Playgroud)
查询系统表给出错误:
The server principal "DOMAIN\LOGIN" is not able to access the database "DATABASENAME" under the current security context.
Run Code Online (Sandbox Code Playgroud)
除了为每个数据库的登录创建一个用户然后显式授予系统表的权限之外,我似乎找不到其他方法来解决这个问题。这对所有未来的数据库提出了一系列新的挑战。我是否遗漏了什么,或者没有简单的方法可以在不授予“系统管理员”服务器级角色的情况下向所有数据库授予此访问权限?
我有一台带有以下内容的 SQL Server 机器:
我将最大服务器内存使用量设置为我认为可接受的值(合计约 10GB,为 Windows 留出 2GB)。我使用以下查询来显示缓冲池和非缓冲池的总 RAM 使用量。我还展示了 MAX SERVER MEMORY 设置。每个实例上的数据库都比分配的 RAM 大得多,即使有几个实例比其他实例得到了更多的使用。实际使用的内存不应该总是非常接近 MAX SERVER MEMORY 设置吗?我发现了一个让我好奇的差距。
DECLARE @TotalRam as decimal (10,2)
--NON-BUFFER POOL
SET @TotalRam = (SELECT sum(pages_allocated_count)/128.0 [Non-Buffer (MB)]
from sys.dm_os_memory_cache_entries
where pages_allocated_count > 0)
--BUFFER POOL
SET @TotalRam = @TotalRam + (
SELECT CAST(COUNT(*) * 8/1024.0 AS DECIMAL (10,2)) AS [Buffer Pool …
Run Code Online (Sandbox Code Playgroud) sql-server ×6
memory ×2
backup ×1
connectivity ×1
license ×1
logins ×1
permissions ×1
powerbi ×1
profiler ×1
restore ×1
rollback ×1
security ×1
trace ×1
transaction ×1