如何查看集群主节点的故障转移历史记录?我试图弄清楚辅助节点在什么时候开始充当主节点。
我们正在运行带有 SQL Server 2012 和可用性组的 Windows Server 2012。
如何查看集群主节点的故障转移历史记录?我试图弄清楚辅助节点在什么时候开始充当主节点。
我们正在运行带有 SQL Server 2012 和可用性组的 Windows Server 2012。
我有简单的查询
WHILE ( @counter < 50 )
BEGIN
BEGIN TRANSACTION
PRINT 'Counter = ' + CONVERT(VARCHAR(4), @counter);
WITH CTE
AS (
SELECT TOP 50000 * FROM MyTable
)
DELETE FROM CTE OPTION ( MAXDOP 1 )
SET @counter += 1
COMMIT TRAN
END
当我查看消息时,该PRINT
命令不会在每个循环中都返回行,而是显示为多行。我已经添加了一行,现在它一次显示了 1 行,整个过程要快得多。
WHILE ( @counter < 50 )
BEGIN
WAITFOR DELAY '00:00:00.5' --< This line
BEGIN TRANSACTION
PRINT 'Counter = ' + CONVERT(VARCHAR(4), @counter);
WITH CTE
AS (
SELECT TOP 50000 * FROM MyTable
)
DELETE FROM CTE OPTION ( MAXDOP 1 )
SET @counter += 1
COMMIT TRAN
END
那么为什么当我为每个循环迭代添加 0.5 秒的等待时间时,它实际上运行得更快,并允许打印消息同时出现?
快速运行:
当系统管理员收到model
正在恢复的错误时,第一个问题开始了。
稍后供应商尝试对数据库进行一些升级。当他们重新启动 SQL Server 时,它无法启动。
查看错误日志。我发现了以下错误
错误 数据库“模型”标记为正在恢复,并且处于不允许运行恢复的状态。错误:927,严重性:14,状态:2。无法打开数据库“模型”。它正处于恢复过程中。无法创建 tempdb。您可能没有足够的可用磁盘空间。通过删除 tempdb 驱动器上的其他文件释放额外的磁盘空间,然后重新启动 SQL Server。检查事件日志中可能指示无法初始化 tempdb 文件的原因的其他错误。
在网上搜索后在MSDN 上找到了这篇文章
Sqlservr.exe -sInstanceName -T3608 -c -f -T3609
当我尝试运行时,使用文章中的步骤启动 sql serverUse tempdb
得到错误消息。根据文章的建议,我从另一台服务器复制了 tempdb.mdf 和 templog.ldf。
现在我收到以下错误:
启动数据库“tempdb”。错误:3456,严重性:21,状态:1。无法重做日志记录 (19:45:366),事务 ID (0:0),页面 (1:16),数据库“tempdb”(数据库 ID 2 )。页面:LSN = (18:72:8),类型 = 1。日志:操作码 = 18,上下文 2,PrevPageLSN:(19:45:287)。从数据库的备份中恢复,或修复数据库。
我正在帮助一位朋友在 SQL Server 2008 R2 标准版上设置数据加密。在最初的研究中,我认为我可以使用 TDE,但没有意识到它仅适用于 SQL Server 的 Enterprise 或 DataCenter 版本。在进一步研究 SQL Server 2008 R2功能后,我发现它确实允许“数据加密和密钥管理”,但我不确定它的含义或如何实现它。
数据加密最有效、成本最低的方法是什么?我应该通过 SQL Server 做某事还是只使用第三方工具来加密数据库和备份所在的整个卷?此外,如果有人能指出一种使用标准版功能的“数据加密”的方法,我将不胜感激。每次我在 sql server 上搜索加密时,我都会不断地思考如何使用 TDE,而在当前情况下,对于企业规模来说购买企业版是不可行的。
加密原因 - HIPAA 合规性。如果可以访问文件系统以进行数据库或备份,则数据将被加密并且无法使用。这可能包括对机器的物理访问或通过本地管理员访问。
这是我的场景:
应用程序“A”产生与计划路线相对应的纬度和经度点。根据路线距离,它可能有数千个点。我知道 Geography 和 Geometry 数据类型,甚至认为它们与 SQL 2008 一起出现我还没有看到有人使用它们,并且不确定使用它的好场景是什么。除了应用程序“A”生成的点之外,我还需要存储应用程序“B”中与实际路线相对应的点。全部存储后,我需要找到与计划路线的偏差。
在与 DBA 讨论安全性之后,我正在开发使用动态查询根据用户输入执行选择语句的应用程序,他们希望我将动态选择语句转换为存储过程。
我已经使用 MSSQL 构建了动态 sql,但我不知道如何将其转换为 Oracle SQL。
CREATE PROCEDURE GetCustomer
@FirstN nvarchar(20) = NULL,
@LastN nvarchar(20) = NULL,
@CUserName nvarchar(10) = NULL,
@CID nvarchar(15) = NULL as
DECLARE @sql nvarchar(4000),
SELECT @sql = 'C_FirstName, C_LastName, C_UserName, C_UserID ' +
'FROM CUSTOMER ' +
'WHERE 1=1 ' +
IF @FirstN IS NOT NULL
SELECT @sql = @sql + ' AND C_FirstName like @FirstN '
IF @LastN IS NOT NULL
SELECT @sql = @sql + ' AND C_LastName like @LastN '
IF @CUserName IS NOT NULL
SELECT @sql = @sql + ' AND C_UserName like @CUserName '
IF @CID IS NOT NULL
SELECT @sql = @sql + ' AND C_UserID like @CID '
EXEC sp_executesql @sql, N'@C_FirstName nvarchar(20), @C_LastName nvarchar(20), @CUserName nvarchar(10), @CID nvarchar(15)',
@FirstN, @LastN, @CUserName, @CID
*请注意,我想防止 SQL 注入我不想只是将字符串添加在一起
**我已经建立了一个单独的类,用于在 .net 中为我的应用程序创建这个动态查询我有近 1000 行代码来处理所有事情并防止 sql 注入,但 DBA 告诉我他们想要存储过程,以便他们可以控制输入和输出。