我的实际镜像部分没有问题,但由于使用了临时表,如果发生故障转移,IIS 会引发一些不稳定(我仍在测试一些东西,所以是我造成了故障转移) .
是否有可能(甚至是一个好主意)镜像tempdb?或者我应该接受如果主体数据库由于任何原因无法访问,有些人可能会被踢出。
我正在使用 ASPState 以便两个 Web 服务器(在启用粘性会话的负载平衡器后面)都可以获取相同的会话数据。
我知道这听起来可能很荒谬,但是:
是否可以在 SQL Server 中的文件级别上分离数据定义(即我的表、视图和其他事物的结构)和行数据。
我认为在 2 个或更多物理分离的驱动器上拥有两个或更多文件组并在其中包含文件以单独存储定义或行数据会很有用;所以如果你的行数据硬盘崩溃,你不会丢失数据结构......
这可以通过分区来完成吗?
我在 SQL Server 2008 R2 上有一个数据库。
我想将它附加到在 Windows 2003 上运行的 SQL Server Express 2008 实例上。
在分离之前,我在 SQL Server 2008 R2 Management Studio 中将数据库上的 SQL 服务器兼容性级别设置为 SQL Server 2005。
但由于“兼容性错误”,我无法将此数据库附加到我在 Windows 2003 上运行的 SQL 2008 实例。
我怎样才能解决这个问题?
我正在考虑使用一些 SQL Server 2008 的加密。
我在 MSDN 上阅读了以下文章:
Q1a:是否为每个数据库实例创建了主密钥密码?
IF NOT EXISTS
(SELECT * FROM sys.symmetric_keys WHERE symmetric_key_id = 101)
CREATE MASTER KEY ENCRYPTION BY
PASSWORD = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
GO
Run Code Online (Sandbox Code Playgroud)
Q1b:如果我在 Server1 上创建主密钥密码并加密表中的列。当我备份该数据库 (.bak) 时,我是否能够将数据库还原到另一个 Server2,或者我是否必须使用相同的密码在 Server2 上创建一个主密钥?
Q2 : 如果我想恢复到另一台服务器,是否需要备份证书、主密钥或对称密钥?
CREATE CERTIFICATE HumanResources037
WITH SUBJECT = 'Employee Social Security Numbers';
GO
CREATE SYMMETRIC KEY SSN_Key_01
WITH ALGORITHM = AES_256
ENCRYPTION BY CERTIFICATE HumanResources037;
GO
Run Code Online (Sandbox Code Playgroud)
Q3 : 什么时候应该打开对称密钥?应该在每次选择之前完成然后关闭吗?即在存储过程开始时打开,然后关闭。
-- Open the symmetric key with which to encrypt the …Run Code Online (Sandbox Code Playgroud) 当我在同一台计算机上安装多个 SQL Server 实例时,每个实例都会获得自己的用于 Analysis Services 和 Reporting Services 的 SQL Server 服务。但是我只得到一个集成服务的服务,为什么?
这似乎是一个有点无聊的问题,但是阻塞是否总是意味着有打开的事务并且可能导致事务日志增长到无穷大,因为打开的事务阻止了日志截断(SIMPLE 模式下的数据库)?
sql-server-2008 sql-server transaction locking transaction-log
我为我们的 SQL Server 2008 R2 Standard 数据库服务器设置了镜像。
问题
我在一个 SQL 文件中有一个还原数据库脚本,我正在尝试将从一个数据库生成的备份还原到一个新的数据库(存在)。SQLCMD 正在命令行上执行该 SQL 文件。命令窗口让我知道恢复成功完成;但是数据库还处于恢复状态,无法访问。因此,我的批处理过程的其余部分失败。如何让数据库退出恢复状态并返回到联机状态,以便我可以运行其他批处理脚本?
我正在使用它来做到这一点:
restore filelistonly
from disk = 'c:\program files\microsoft sql server\mssql10.mssqlserver\mssql\backup\olddb.bak'
GO
RESTORE DATABASE NewDB
FROM DISK = 'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Backup\olddb.bak'
WITH NORECOVERY, REPLACE,
MOVE 'OldDB' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\newdb.mdf',
MOVE 'OldDB_Log' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\newdb.ldf'
Run Code Online (Sandbox Code Playgroud)
如果我的数据库说它成功完成,为什么我的数据库仍然处于恢复状态,有什么想法吗?
谢谢。
运行此代码:
ALTER TABLE npidata
ALTER COLUMN npi varchar(20)
Run Code Online (Sandbox Code Playgroud)
给出这个错误:
消息 9002,级别 17,状态 4,第 2 行
数据库“SalesDWH”的事务日志已满。要找出无法重用日志中的空间的原因,请参阅 sys.databases 中的 log_reuse_wait_desc 列
我正在将NPI列的数据类型从更改varchar(80)为varchar(20)。
下面的代码给了我同样的错误信息:
insert into npidata1 select * from npidata
Run Code Online (Sandbox Code Playgroud)
log_reuse_wait_desc 显示 NOTHINGSIMPLEautogrowth 被设定为 NONEautoshrink 被设定为 true我还可以做些什么?我的理解是日志应该在每次变得太大时截断。我究竟做错了什么?
我们最近使用这个查询在我们的数据库中查找没有聚集索引的表,发现它返回的结果之一是“sys.sysfiles1”表。我们正在运行 SQL Server 2008,我的印象是该表不再使用(正如一些答案指出的那样,似乎存在一种误解,即该表仅存在于从 SQL Server 2000 升级的数据库)。此外,我无法直接从 sys.sysfiles1 表中选择任何内容(尽管我可以直接从 sys.sysfiles 视图中选择)。
运行以下命令以针对本地安装的 SQL Server 2008 (@@version = Microsoft SQL Server 2008 R2 (SP1) - 10.50.2500.0 (X64),尽管我们已经在 SQL Server 的生产实例中看到它) 创建一个新数据库2008 年)也说明了我的意思:
CREATE DATABASE SysFilesTesting
--returns a row:
SELECT * FROM SysFilesTesting.sys.objects where name = 'sysfiles1'
--throws 'invalid object name' error:
SELECT * FROM SysFilesTesting.sys.sysfiles1
Run Code Online (Sandbox Code Playgroud)
为什么 sys.objects 报告 sysfiles1 表的存在?
sql-server-2008 ×10
sql-server ×6
alter-table ×1
encryption ×1
installation ×1
instance ×1
locking ×1
mirroring ×1
partitioning ×1
restore ×1
security ×1
sqlcmd ×1
ssis ×1
ssrs ×1
transaction ×1