标签: sql-server

SQL Server 进行未加密的完整备份

我必须对数据库进行未加密的完整备份,以便将其发送给其他团队,然后他们可以在自己的环境中恢复它。另一个团队有不同的环境和不同的 SQL Server 证书。

我的完整备份服务器设置是进行AES 128加密备份。而且我不打算与其他团队共享解密密钥和证书。我的 SQL Server 版本是 Standard 2014 SP2。

加密完整备份

我见过加密备份,但我还没有遇到过这种情况。有没有人遇到过这种类型的场景。任何帮助将不胜感激。

编辑 -

就我而言,所有 SQL Server 数据库备份都使用自签名证书进行加密。此证书安装在所有服务器上,因此只需管理一个证书。如果证书过期,则需要续订,因为备份将不会使用过期的证书运行。此外,需要加载证书和私钥以恢复使用密钥对创建的备份

安装的证书以及到期日期

这是我不打算与其他团队共享的证书和私钥。因此,需要可以绕过证书加密的仅复制完整备份。有什么办法,我可以通过创建一个不需要加载证书和私钥的备份来解决上述情况。

按照learning-dbadmin 的要求添加查询的输出-

在此处输入图片说明

sql-server backup sql-server-2014

0
推荐指数
1
解决办法
839
查看次数

日志备份与差异备份

我们正在尝试定义备份策略。我们打算申请以下内容:

  • 每周完整备份,保留 30 天。
  • 每晚差异备份,保留 7 天

但我们也在探索其他选项 - 事务日志备份和 Azure 备份(默认为 2 小时)

我是否正确地说差异备份会让我们到达上次差异备份,然后我们可以使用日志备份来接近我们想要恢复的位置?

因此,备份将如下所示:

  • 周日凌晨 1 点 - 完整备份。
  • 周一凌晨 1 点 - 差价
  • 周二凌晨 1 点 - 微分
  • 星期三凌晨 1 点 - 微分

自星期三以来每 2 小时 Inc - 日志备份。

让我们说灾难在周三中午来袭!

恢复差异,让我们在星期三凌晨 1 点...然后我们使用日志备份让我们在灾难发生之前到达。

这是类型之间的正确区分吗?

sql-server

0
推荐指数
1
解决办法
135
查看次数

SQL 语句层过滤查询限制访问

目标:想要创建一个所谓的“SQL 语句层”来检查/过滤所有传入的查询。如果传入的查询无效,则应拒绝。

用例:限制数据库访问并避免不可恢复的查询。在多个应用程序中没有关于相同“触发器或过程”(集中式)的重复代码。

迄今为止的研究:

  • 赠款/特权
  • 存储过程的限制

描述:我站在一个新项目前,我们想限制和最小化对数据库的访问。例如:开发者可以DROP在应用层内部创建一个查询,但是数据库会拒绝这个查询,因为DROP查询是不允许的。

几年前我与 Laravel 一起工作,并在应用程序层内完成了大部分“程序和触发器”工作,例如控制器,而不是使用 Mutator 或 Accessor。现在我们希望将其减少到尽可能低的级别,以避免在不同的应用程序中出现像 Mutator 和 Accessor 这样的重复代码。

问题:Grants 和存储过程是唯一的方法吗?如果不是,是哪些?

sql-server stored-procedures permissions

0
推荐指数
1
解决办法
46
查看次数

ISOLATION LEVEL READ UNCOMMITTED 会影响删除吗?

我有一个特殊的情况让我使用SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED. (我sp_getapplock用来确保单个进程访问给定的行。)

我正在尽力避免任何类型的锁定升级。我清楚地知道ISOLATION LEVEL READ UNCOMMITTED读取有什么作用,但我不确定删除。

我看到用做删除一些示例代码ROWLOCKREADPAST,连同ISOLATION LEVEL READ UNCOMMITTED但我是没有什么,会做明确的,所以我也没有一直在使用它了。

这是否需要防止我的删除锁定升级或就ISOLATION LEVEL READ UNCOMMITTED足够了?

注意:
如果有兴趣,这里这里是这个问题的相关 sprocs。

sql-server locking isolation-level sql-server-2016

0
推荐指数
1
解决办法
483
查看次数

当我们运行完整备份时,SQL Server 会备份哪些内容

就像我想问的那样,假设我们使用 GUI 或 T-SQL 运行完整备份,SQL Server 会备份哪个文件,即仅备份数据文件或日志文件。

我已经读过它也需要 SQL Server 的活动事务部分(日志文件)。请确认。

如果是,那么当时正在运行并随后提交的事务会发生什么,该事务的日志是否会在备份时出现。

如果数据库失败,sql server 将如何恢复到它。

sql-server backup transaction-log

0
推荐指数
1
解决办法
64
查看次数

为什么我需要在具有两个节点的 WSFC 中进行见证?

我的集群的两个节点中都运行着 Windows Server 2019 和 SQL Server 2019。在我的情况下,没有证人一切正常。我需要 Windows Server 故障转移群集 (WSFC) 用于我用作 DR 解决方案的可用性组。

当两个节点都运行时,我将关闭一个节点(它具有我的 AG 的主数据库)并从另一个节点执行可用性组的故障转移,反之亦然。有人可以解释为什么我们需要在两个节点故障转移集群中的见证,或者我如何重新创建我们需要见证的场景。

sql-server clustering availability-groups disaster-recovery

0
推荐指数
1
解决办法
211
查看次数

IF 语句的问题

我遇到了这个存储过程的问题。当用户选择“是”时,它应该按照它在“是”的 if 语句中所说的那样做,但它什么也不做,也不向数据库中插入任何内容。它适用于“否”条件。你能告诉我什么不起作用吗?

ALTER PROCEDURE [dbo].[sp_ff_Insert_ProjectApproved]
(

        @project_no varchar(6)
       ,@sequence_no int
       ,@grant_programme varchar(2)
       ,@jobs_approved int
       ,@grant_amount int
       ,@Committee varchar(4)
       ,@Meeting_no int
       ,@Minute_Item int
       ,@jobs_maintained int
       ,@approval_date date
       ,@approval_by int
       ,@comments varchar(1600)
       ,@created_by int
       ,@created_date datetime
       ,@updated_by int
       ,@updated_date datetime
       ,@approval varchar(5)
       ,@ratify varchar(3)




       --,@research_type varchar(1)='T'
)

AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from


DECLARE @ReturnValue int,
        @post_approval_status varchar(3),
        @approval_status varchar(3),
        @current_status varchar(3)  

set @current_status = ( SELECT approval_status from approval_master_tbl
         WHERE project_no = @project_no …
Run Code Online (Sandbox Code Playgroud)

null sql-server t-sql

0
推荐指数
1
解决办法
52
查看次数

“同时处理多行。减少并重试。” SQL Server Management Studio 中的错误

尝试从 SQL Server Management Studio v18.5 更新某些行时出现此错误:

消息 50000,级别 16,状态 1,过程 UPDATElimit,第 7 行 [批处理起始行 0] 要同时处理许多行。减少并重试。Msg 3609, Level 16, State 1, Line 1 事务在触发器中结束。该批次已中止。

我怎样才能绕过这个限制?

触发代码:

ALTER TRIGGER [dbo].[UPDATElimit] 
on [dbo].[table] 
FOR UPDATE 
AS 
BEGIN 
    IF (select count(*) from inserted) > 1000 
    BEGIN 
        RAISERROR('To many rows being processed at one. Reduce and try again.', 16, 1) 
        ROLLBACK 
    END 
END
Run Code Online (Sandbox Code Playgroud)

trigger sql-server t-sql

0
推荐指数
1
解决办法
95
查看次数

为什么我收到 SQL Server 数据库邮件的电子邮件大小错误?

我通过 SQL Server 电子邮件发送 6 个 .csv 文件作为附件。但是电子邮件失败并在数据库邮件日志中显示以下消息:

异常消息:无法向邮件服务器发送邮件。(服务不可用,关闭传输通道。服务器响应为:数据长度超过 52.4MiB 限制)

然后我运行以下命令将 maxfilesize 限制增加 2 GB

EXECUTE msdb.dbo.sysmail_configure_sp  
'MaxFileSize', '2147483647';
Run Code Online (Sandbox Code Playgroud)

文件大小限制已成功更改为 2 GB,但我仍然收到相同的错误消息。

以下是我的文件大小(以 KB 为单位)

文件 A 213 KB,文件 B 265 KB,文件 C 6246 KB,文件 D 35 KB,文件 E 60 KB,文件 F 31371 KB

我正在使用 mail-gun(smtp) 发送电子邮件。电子邮件在没有 FILE F 的情况下成功运行。但是当我附加 FILE F 时,电子邮件失败。当我将最大文件大小增加到 2 GB 时,为什么我的电子邮件失败。任何的想法?

sql-server database-mail

0
推荐指数
1
解决办法
106
查看次数

生成脚本以删除或映射 SQL Server 实例中的孤立用户

我对 SQL Server 很陌生。我有一个脚本,它在所有数据库中查找孤立用户并生成脚本以删除或映射用户以正确登录(如果可用)。

由于我想在大量服务器上运行该脚本,所以我想到了使用 PowerShell 来帮助我。但我现在有两个问题:

  1. 脚本错误
  2. Power-shell 执行出错

问题 1:以下脚本本身返回输出,但仍显示一些错误。我试图调试,但我无法这样做。

DECLARE @orphan_users TABLE (
    Server NVARCHAR(MAX),
    DBName sysname,
    [user_name] sysname,
    type_desc nvarchar(60),
    default_schema_name sysname NULL,
    create_date datetime,
    modify_date DATETIME,
    [sid] VARBINARY(85),
    cr_type int
); 

INSERT INTO @orphan_users (Server,
    DBname,
    [user_name],
    type_desc,
    default_schema_name,
    create_date,
    modify_date,
    [sid],
    cr_type
) 
EXEC sp_msforeachdb 
'use [?] 
SELECT 
    @@SERVERNAME 
    ,DB_NAME() DBname 
    ,name 
    ,type_desc 
    ,default_schema_name 
    ,create_date 
    ,modify_date 
    ,[sid] 
    ,Datalength(sid) AA 
from sys.database_principals 
where type in (''S'') 
and [sid] not in ( select [sid] from …
Run Code Online (Sandbox Code Playgroud)

sql-server powershell

0
推荐指数
1
解决办法
91
查看次数