我正在调查 SQL Server 2008 Reporting Services 的问题。直到昨天早上它一直工作正常。现在我注意到它ReportServerTempDB继续进入Restoring...模式。我用 将它恢复到在线模式RESTORE DATABASE [ReportServerQ4TempDB] WITH RECOVERY。
在此之后报告工作正常,然后在 10-15 分钟后ReportServerTempDB返回到恢复模式。报告执行给出以下错误:
报表服务器数据库中出现错误。这可能是由于数据库中的连接失败、超时或磁盘空间不足造成的。(rsReportServerDatabaseError) 有关此错误的详细信息,请导航到本地服务器计算机上的报表服务器,或启用远程错误...
任何建议为什么这样做。
我检查了以下内容
有多个 SSRS 实例正在运行,SQL 实例在同一台服务器上托管 SSRS 的数据库。
我已经检查过该数据库没有启用 AutoClose,并且我发现数据库Restoring...每小时进入模式,当我们的日志备份作业运行时。

服务器“servername”的还原失败。(Microsoft.SqlServer.SmoExtended)
System.Data.SqlClient.SqlError: RESTORE 无法启动数据库“ECP”。(Microsoft.SqlServer.Smo)
数据库已创建,但无法使用对象资源管理器访问:
数据库 ECP 不可访问。(对象浏览器)
感谢您提供有关如何使数据库正常工作的任何建议。
编辑:此查询
select state_desc from sys.databases where name = 'ECP';
Run Code Online (Sandbox Code Playgroud)
返回RECOVERY_PENDING。
我再次删除了数据库并进行了新的尝试
restore verifyonly from disk = 'path\file';
Run Code Online (Sandbox Code Playgroud)
这返回
尝试恢复此备份可能会遇到存储空间问题。后续消息将提供详细信息。
“F:\ECPDATA1\ECPDATA1.mdf”指定的路径不在有效目录中。
文件“F:\ECPDATA2\ECPDATA2.ndf”的目录查找失败,出现操作系统错误 3(无法检索此错误的文本。原因:15100)。
文件“F:\ECPDATA3\ECPDATA3.ndf”的目录查找失败,出现操作系统错误 3(无法检索此错误的文本。原因:15105)。 文件“E:\ECPLOG1\ECPLOG1.ldf”的目录查找失败,出现操作系统错误 21(无法检索此错误的文本。原因:15105)。 文件 1 上的备份集有效。
文件“F:\ECPDATA4\ECPDATA4.ndf”的目录查找失败,出现操作系统错误 3(无法检索此错误的文本。原因:15105)。
既然它说备份集是有效的,我只需要获取指定的文件,使其工作,对吗?但是在这台服务器上我没有驱动器E:或F:. 如何在备份文件中调整它?或者是否有可能(我对 windows-server-2008-r2 不太熟悉)在 linux 上有某种符号链接?
我在 SQL Server 中有这个查询:
SELECT Dated, AccountID, AccountName, Rate,
case (when (Credit-Debit) > 0 then Credit-Debit END) as Credit,
case (when (Credit-Debit) < 0 then Credit-Debit END) as Debit,
Balance
FROM TempTrallBalance
Run Code Online (Sandbox Code Playgroud)
如何将其转换为 Access 语法?
我有一个主 ID 列,但对于该行的每次编辑,还有一个序列 ID 列(初始行为 1,每次编辑都会增加序列 ID,但主 ID 列保持不变)。在查询中仅选择最新(最大序列 ID)行的最佳方法是什么?我目前以编程方式执行此操作,但想知道是否有办法在使用 SQL 的一个查询中完成所有操作。
样本数据:
Person_ID Person_Seq_ID Person_Name Person_Favorite_Color
--------- ------------- ----------- ---------------------
1 1 John Doe Green
1 2 John Doe Turquoise
2 1 Jane Doe Blue
3 1 Mike Smith Red
Run Code Online (Sandbox Code Playgroud)
假设我有这个查询:
SELECT * FROM Person
Run Code Online (Sandbox Code Playgroud)
我只希望John Doe返回最近的行(在本例中为序列 ID #2),并且还应返回 Jane 和 Mike 的单行。
预期结果:
Person_ID Person_Seq_ID Person_Name Person_Favorite_Color
--------- ------------- ----------- ---------------------
1 2 John Doe Turquoise
2 1 Jane Doe Blue
3 1 Mike Smith Red …Run Code Online (Sandbox Code Playgroud) 我正在使用 SQL Server 2008 R2。如果正在执行数据库备份(完整/差异/事务日志)并且突然断电或系统崩溃,会发生什么情况?这会损坏备份集吗?
如果是这样,那么有哪些可用选项,以便在需要进行数据库还原时以及何时完成我不会以损坏的备份集结束。
如果不是,那么正在进行的备份的状态是什么?
sys.tables 列出单个数据库中的所有用户表,但没有它们的架构名称。
如果我在创建代码时知道现有数据库,我可以使用它USE来浏览所有数据库,查询sys.tables其表,并将列表插入到临时表中以供以后使用。
但是,有没有更简单的方法来做到这一点,并且通过唯一的查询能够从所有用户数据库中检索所有用户表及其架构?
我很难过,我一直在搜索和研究,直到我的浏览器标签不再显示关闭按钮(“X”),直到您将鼠标悬停在它们上面。我一遍又一遍地尝试重写搜索词,但我想我不知道该问什么,所以如果已经回答了这个问题,我深表歉意。
我试图弄清楚如何将一个 INT 列添加到一个表中,该列从 1 开始并根据另一个列值(我们称之为case_id)递增(我们称此字段版本),如果该值与先前迭代的行 - 如果它不相同,则版本值应重置为 1。
我试图通过更新我创建的临时表或在 SELECT INTO 语句期间添加值来解决这个问题。
此表的目的是存储案例的历史更新记录,由case_id列标识,此版本值与修改时间戳的顺序相同。
将此表结构视为源数据的示例:
---------------------------------
| case_id | modify_time |
---------------------------------
| 1 | 2015-05-01 11:12:13 |
| 1 | 2015-05-02 12:13:14 |
| 1 | 2015-05-03 13:14:15 |
| 2 | 2015-05-01 11:12:13 |
| 2 | 2015-05-01 12:13:14 |
| 3 | 2015-05-02 11:12:13 |
---------------------------------
Run Code Online (Sandbox Code Playgroud)
将此作为我想要实现的最终结果的示例:
-------------------------------------------
| case_id | modify_time | version |
-------------------------------------------
| 1 | …Run Code Online (Sandbox Code Playgroud) 我正在使用扩展事件来跟踪服务器上正在执行的过程及其执行程序的主机名。
我使用了以下 XE 脚本:
CREATE EVENT SESSION [EXEC_SP] ON SERVER
ADD EVENT sqlserver.sp_statement_completed
(
SET collect_statement=(0)
ACTION
(
sqlserver.client_hostname,sqlserver.database_id,sqlserver.database_name,
sqlserver.nt_username,sqlserver.server_instance_name,
sqlserver.server_principal_name,sqlserver.session_id,sqlserver.sql_text,
sqlserver.transaction_id,sqlserver.username
)
WHERE ( [sqlserver].[is_system]=(0))
)
ADD TARGET package0.asynchronous_file_target
(
SET FILENAME = N'C:\EXEC_SP.xel',
METADATAFILE = N'C:\EXEC_SP.xem'
)
WITH
(
MAX_MEMORY=4096KB,
EVENT_RETENTION_MODE=NO_EVENT_LOSS,
MAX_DISPATCH_LATENCY=15 SECONDS,
TRACK_CAUSALITY=OFF,
STARTUP_STATE=ON
);
Run Code Online (Sandbox Code Playgroud)
但是,正在执行的过程主体内的每个语句都在目标处构成一行。
例如,如果我的程序主体中有 5 个语句,则该事件将被触发 5 次,并且在目标处将有 5 个不同的条目对应于相同的条目。
我只为每个正在执行的过程寻找一个条目,而不是多个条目。
也就是说,正在执行的每个过程都应该只构成 1 行而不是多行。
如何解决这个问题?
我目前正在尝试从执行以下操作的表创建视图:
Table A
???????????????????????????????
? PART NUMBER ? FILE NAME ?
???????????????????????????????
? PN0001-01 ? FOO ?
? PN0002-01 ? BAR ?
? PN0003-01 ? FOO,BAR ?
? PN0004-01 ? BAR,FOO,FOB ?
???????????????????????????????
Run Code Online (Sandbox Code Playgroud)
创造
View B
???????????????????????????????
? PART NUMBER ? FILE NAME ?
???????????????????????????????
? PN0001-01 ? FOO ?
? PN0002-01 ? BAR ?
? PN0003-01 ? FOO ?
? PN0003-01 ? BAR ?
? PN0004-01 ? BAR ?
? PN0004-01 ? FOO ?
? PN0004-01 ? FOB ? …Run Code Online (Sandbox Code Playgroud) SQL Server 2008 R2 中的跟踪标志 1605 是什么?到目前为止我还没有找到任何关于它的文档。
sql-server ×9
backup ×2
t-sql ×2
alter-table ×1
ms-access ×1
restore ×1
ssrs ×1
ssrs-2008 ×1
update ×1
view ×1