我目前有一个带有非常基本的 AAG 设置的 SQL Server 2014 实例。AG中有2个节点。主节点上的日志驱动器有 90% 的可用空间,辅助节点上的日志驱动器有 5% 的可用空间。我想我有两个问题是:
- 由于它们是同步的,它们不应该总是或多或少相同的大小吗?
- 如何在不首先将其设为主节点的情况下缩小辅助节点上的日志大小?
有没有办法在不进行手动故障转移的情况下完成第二个,使其成为主要然后完成所有工作?我如何才能防止将来出现这种巨大的尺寸差异,或者这只是意料之中的?提前感谢您的帮助。
我目前有一个带有非常基本的 AAG 设置的 SQL Server 2014 实例。AG中有2个节点。主节点上的日志驱动器有 90% 的可用空间,辅助节点上的日志驱动器有 5% 的可用空间。我想我有两个问题是:
有没有办法在不进行手动故障转移的情况下完成第二个,使其成为主要然后完成所有工作?我如何才能防止将来出现这种巨大的尺寸差异,或者这只是意料之中的?提前感谢您的帮助。
我有一个 SQL Server 2017 实例,我已将其配置为侦听多个端口 1433 和 1234。我想知道是否有可能让一个端口 (1234)只接受安全连接,而默认端口同时接受这两者?
我已经设置了实例,验证了两个端口都在工作,并安装了证书,但似乎我唯一的选择是在配置管理器中为整个实例强制使用 SSL。我错过了什么吗?感谢所有帮助。
我正在为需要在 200 多个实例上运行的脚本中的数据库电子邮件创建电子邮件配置文件。该脚本将创建一个数据库电子邮件配置文件,以从代理作业发送警报。有没有办法遍历实例上存在的所有作业并更改参数,以便它将使用我创建的新电子邮件配置文件而不是当前使用的电子邮件配置文件?(如果之后我可以清理所有未使用的电子邮件配置文件,则额外奖励)
DECLARE @sb INT;
DECLARE @sc INT;
SET @sb =
(
SELECT is_broker_enabled FROM sys.databases WHERE name = 'msdb'
);
SET @sc =
(
SELECT CONVERT(INT, value_in_use)
FROM sys.configurations
WHERE name = 'Database Mail XPs'
);
IF (@sb = 1 AND @sc = 1)
BEGIN
PRINT 'Creating email profile';
DECLARE @account_id INT;
EXEC msdb.dbo.sysmail_add_account_sp @account_name = 'DatabaseServices - SQLMail Account',
@display_name = N'XXX - Database Services',
@replyto_address = N'[email protected]',
@description = N'SQL Server generated email from databases services team',
@mailserver_name = 'yyy.xxx.pvt',
@email_address = '[email protected]',
@port = 25,
@account_id = @account_id OUTPUT;
END
我试图找到 VerNum 不匹配的第一次出现的 SNum。在这种情况下,它应该指向 SNum = 300,因为 VerNum 12 不存在。
DROP TABLE #temp1
DROP TABLE #temp2
CREATE TABLE #temp1 (VerNum INT, SNum INT)
INSERT INTO #temp1
VALUES (11,100), (12,100), (11,200), (12,200), (11,300)
CREATE TABLE #temp2 (VerNum INT)
INSERT INTO #temp2
VALUES (11), (12)
SELECT * FROM #temp1
SELECT * FROM #temp2
完全连接不起作用,我可以遍历表并获得我想要的结果,但必须有更好的方法。任何帮助表示赞赏。
我什至不确定这个问题是否有必要,但我很想知道每个人的想法。我在同一台服务器上有两个数据库,dbFoo,dbBar。dbFoo 有下表请注意,这是一种简化的示例,并且语法可能不正确,因为我急于求成,并且对潜在问题的答案更感兴趣,然后是执行此操作的代码...
CREATE TABLE dbo.CodeNumbers(
CodeNumbersID INT IDENTITY (1,1) NOT NULL PRIMARY KEY,
CodeValue VARCHAR(30) NOT NULL
IsUsed BIT NOT NULL DEFAULT(0)
);
dbo.CodeNumbers
使用提供的每月 CSV 进行填充,您选择的导入方法已经编写好以将它们放入其中。我们永远不会得到重复的代码。
让我们假设我们在表中有 10,000,000 行。导入时都遵循这种格式:
1, 'ajdirjfisofklrlfo039402', 0 all the way till
10000000, 'fkeiir9489', 0
现在在 dbBar 我有 2 个存储过程,第一个应该访问 dbFoo 中第一个未使用的代码,将其返回到 out 变量中并将其标记为已使用。所以我有类似的东西:
CREATE PROCEDURE GetNextUseableCode
@CodeOut VARCHAR(30) OUTPUT,
@CID INT OUTPUT
AS
SELECT @CID = CodeNumbersID, @CodeOut = CodeValue
FROM dbFoo.dbo.CodeNumbers
WHERE IsUsed = 0
UPDATE dbFoo.dbo.CodeNumbers
SET IsUsed = 1
WHERE CodeNumbersID = @CID
从 dbBar 调用该过程的代码每天在不同时间被 200k 会话访问。当dbFoo.Codes
没有更多返回时,一切都很好,应用程序只是告诉抱歉明天不再检查。
我有3个主要问题..
为了避免竞争条件,我需要在代码中添加什么特别的东西,如果是这样,最好在不让系统崩溃的情况下处理这个问题。
它们是确保在调用过程时获取下一个代码的有效方法,是 ID 列中按时间顺序排列的下一个代码。
是否还有其他我现在没有考虑的可能引发大问题的问题,以及处理这种情况的雄辩方式是什么?
我知道这是一个很长的开放式问题,我有一些编码的解决方案,但我觉得有更好的方法来获得我想要的结果。
一如既往地提前感谢所有帮助。
我有一个数据库备份作业设置为使用完全备份和仅复制选项,每天一次。仅副本是打开的,因为从我所读的内容来看,这是备份连接到可用性组的数据库的唯一方法。我在同一个 AG 上使用相同的选项每 20 分钟进行一次日志备份。在这些备份运行后截断事务日志的最佳做法是什么。完整备份不会被截断,因为它只使用与日志备份相同的副本。他们越来越失控。我知道我可以使用 DBCC SHRINKFILE,但我读的越多,它看起来就越危险。还有其他方法或最佳实践吗?
任何建议表示赞赏。
我在 sql 2012 中使用 always on 并设置了 AG。我想知道我是否要备份主数据库并在不关闭集群等的情况下恢复它。
其次,如果我有一个正在部署我的数据库的 SSDT 项目并且我事先有一个 AG 设置并且要通过该项目将那个空白数据库部署到主数据库,它会“同步”更改因此删除所有数据(如果有的话)出现在中学?这是一个不太可能的场景,只是想知道会发生什么。
谢谢!
我有几个关于 Always On HA 和集群设置的问题。
当您设置 AG 时,它会为集群设置您的 IP 地址,我如何才能从使用 DHCP 切换到静态 IP 地址?我现在让它与 DHCP 一起工作,但将来我想为我现有的 AG 以及我设置的未来组更改它。不过,我的设置中似乎没有提供该选项。
第二个问题是在设置组以使用完全同步时它工作得很好。但是,我想弄清楚的是同步数据的存储位置。我正在使用同步提交模式。从它看起来像初始同步,镜像的数据存储并应用在基本日志中,我似乎无法找到该日志的存储位置。
任何信息或链接将不胜感激。
我正在第一次设置始终在高可用性集群上。在配置组并进行测试以确保其正常运行后,任何人都可以从网络角度向我解释,SQL 如何知道何时进行故障转移,以及连接到 SQL 服务器的应用程序如何知道它指向何处?
因此,例如,我有一个foo
连接到命名实例的应用程序DB01.FOO
。当foo
失败并转至DB02.FOO
时,我的应用程序如何知道它应该与 通话DB02.FOO
?
DB02.FOO
在同一个域中,但在不同的服务器中。在尝试之前,我只是想全面了解这方面的所有方面。如果有人会推荐任何链接,那也很棒。
我在同一台服务器上有 2 个数据库。DB-A 和 DB-B。DB-B 有一个对数据库 B 具有读写访问权限的用户。我想授予 DB-B 中的用户对数据库 A 中的 2 个存储过程的执行权限。当数据库位于单独的服务器上时,我能够做到这一点通过设置链接服务器并映射链接登录。当数据库在同一台服务器上时,我遇到了麻烦。有人可以告诉我如何完成这项任务。
谢谢,詹姆斯