昨天我丢失了在我的系统中输入和编辑的所有数据,我的 ISP 向我宣布昨晚的备份已损坏且无法恢复。
有没有办法访问数据库的日志文件,尝试将数据库恢复到当天数据被删除之前的点?我正在使用 SQL Server 2012 标准版。
我试过这个(我在本网站的另一个问题中找到了):
SELECT deqs.last_execution_time AS [Time], dest.TEXT AS [Query]
FROM sys.dm_exec_query_stats AS deqs
CROSS APPLY sys.dm_exec_sql_text(deqs.sql_handle) AS dest
ORDER BY deqs.last_execution_time DESC
Run Code Online (Sandbox Code Playgroud)
但我从今天早上开始才收到查询。
如果有任何帮助,我将不胜感激。
是否有 T-sql 命令,例如 Oracle“Connect”,它可以让我更改我登录的用户?
我有两个集群,每个集群有两个配置为主动/被动的节点;两个集群使用单独的服务器作为见证人参与高可用性镜像会话。
当主集群中的一个节点出现故障时,镜像故障转移似乎在主集群的辅助节点有时间上线之前就开始了。
有没有告诉见证服务器让被动节点在启动故障转移到辅助集群之前尝试联机?
如果我没记错的话,上次Microsoft Sqlcmd要求每个命令都以';'结尾 然后按 Enter 键执行命令。
但是,目前,我们需要在GO每次执行命令时键入 。
那么,是否有其他替代方法,当我们在以“;”结束命令后按 Enter 键时,它会执行命令吗?
我在某些合并复制数据库的 msmerge_contents 表上遇到了一个非常令人困惑的问题。似乎我在表 msmerge_contents 的同一索引上的完全相同的行上收到了死锁。
这是我目前看到的死锁 xml。根据我可以告诉索引名称的信息:1 表示聚集索引(查看关联的 objid)。所以它是相同的 i/o 路径并且行 hashid 是相同的 (b5f70c321dc6),即同一行。一个过程是我相信合并代理运行的 msmakegeneration(在这种情况下每分钟),另一个过程是调用的触发器(每次请求表更新时)。任何人都可以对这个问题有所了解,我仍在学习僵局,对我来说这没有意义。谢谢
<deadlock-list>
<deadlock victim="process8f31f9498">
<process-list>
<process id="process8f31f9498" taskpriority="5" logused="2616" waitresource="KEY: 20:72057594653704192 (b5f70c321dc6)" waittime="1925" ownerId="3680081779" transactionname="user_transaction" lasttranstarted="2012-10-05T10:02:01.223" XDES="0x8f3b283a8" lockMode="U" schedulerid="7" kpid="11784" status="suspended" spid="252" sbid="0" ecid="0" priority="-5" trancount="2" lastbatchstarted="2012-10-05T10:02:01.177" lastbatchcompleted="2012-10-05T10:02:01.177" lastattention="1900-01-01T00:00:00.177" clientapp="GN-SQL-GW_National-GW_National Publicati-vz-sql-59" hostname="GN-SQL" hostpid="19364" loginname="DCSINFOSYS\SQLServer" isolationlevel="read committed (2)" xactid="3680081779" currentdb="20" lockTimeout="4294967295" clientoption1="673384544" clientoption2="128024">
<executionStack>
<frame procname="mssqlsystemresource.sys.sp_MSmakegeneration" line="337" stmtstart="29568" stmtend="29880" sqlhandle="0x0300ff7fa885d0f97c6e5901f39f000001000000000000000000000000000000000000000000000000000000">
update dbo.MSmerge_contents with (rowlock) set generation = @target_gen
where generation = @gen and tablenick = @art_nick </frame> …Run Code Online (Sandbox Code Playgroud) 如果调用CREATE DATABASE foo两次,我会收到错误消息:
Msg 1801, Level 16, State 3, Line 1
Database 'dropme' already exists. Choose a different database name.
Run Code Online (Sandbox Code Playgroud)
错误消息列在sys.messages 中:
SELECT * FROM sys.messages WHERE message_id = 1801 AND language_id = 1033
Run Code Online (Sandbox Code Playgroud)
我有一个 SQLCLR 过程,它基本上可以执行CREATE DATABASE FOR ATTACH. 它一开始就知道创建的数据库的名称,但在附加之前做了很多工作。因此,我想在继续之前确保数据库不存在,如果存在则给出该错误。
如果我尝试在该消息上使用RAISERROR(1801, 16, 1)它不会让我:
Msg 2732, Level 16, State 1, Line 1
Error number 1801 is invalid. The number must be from 13000 through 2147483647 and it cannot be 50000.
Run Code Online (Sandbox Code Playgroud)
除了引发错误并使 msg_id …
有人建议我设置AUTO_UPDATE_STATISTICS_ASYNC ON可能是个好主意。我一直在阅读一些想法,但仍然不确定,因为这是一个非默认设置。
有什么进一步的建议吗?
我目前正在创建一个新数据库,以前只使用过一个数据文件和一个日志文件。我在网上做了一些关于多个数据文件的好处的研究,但我发现关于单个磁盘上多个数据文件的好处的意见不一。所以我的问题是:如果我唯一可用的磁盘是 SAN 磁盘,我会看到将数据拆分为 4 个单独文件的任何性能优势(例如多线程/并行处理)吗?使用单个文件会更好吗?
此外,将索引(可能还有存档表)分离到同一磁盘上不同文件上的自己的文件组中是否有任何性能优势?这只会提供行政利益吗?
谢谢!
SQL Server 中 object_id 的唯一性级别是什么?我的意思是,这个值是不是每个数据库、每个实例、每个服务器都是唯一的,...此外,当我在另一个服务器或实例中恢复数据库时会发生什么?如果我从脚本而不是备份创建数据库,那么 object_id 会发生什么?
我们有一个 SQL Server 2008R2 标准版,其中包含多个数据库,这些数据库属于 16 核服务器上的不同应用程序。
最近推出的一个应用程序会定期执行昂贵的查询,导致 CPU 使用率达到 100%。当然,其他应用程序正在报告性能问题。
资源调控器似乎是控制流氓应用程序的合适工具,不幸的是它仅在企业版中可用。
由于其他应用程序相当简单,我试图通过降低实例的“最大并行度”来控制问题,以便单个查询无法降低所有内容。虽然这成功地将 CPU 负载保持在 50%,但出人意料地没有阻止其他应用程序陷入困境。
现在我们已决定将新应用程序的数据库移动到一个专用实例,但此实例的最佳配置是什么?我应该保留 MAXDOP 设置,使用 CPU 亲和掩码还是有其他选项来限制我不知道的 CPU 使用率?
sql-server ×10
clustering ×1
datafile ×1
deadlock ×1
logins ×1
metadata ×1
mirroring ×1
recovery ×1
san ×1
sqlcmd ×1
statistics ×1
storage ×1
t-sql ×1