我在哪里可以找到有关如何更好地转向 24x7 运营的资源?拥有大数据库的大公司是如何做到这一点的?我们的夜间工作,例如
所有这些似乎都会对我们的系统造成严重影响(即在线用户和实时数据馈送)。我已经在亚马逊上查找了与此主题相关的任何书籍,但到目前为止还没有找到任何内容。
我们正在构建一个新的 BizTalk 群集,其中包含两个 BizTalk 应用程序服务器和两个 SQL Server。从 BizTalk AppServer #1 上的 SSMS(与 #2 类似),我们有两个场景:
当前- 我们的基础架构团队刚刚重建了 2012/R2 Windows。它无法连接到特定的 SQL Server,但可以连接到其他 SQL Server。令人困惑的部分是,任何其他机器似乎都能够很好地连接到同一个 SQL Server,并且还可以针对它运行查询。
昨天- (我们从昨天开始重建盒子,所以不能回去......只是想描述问题。)它似乎偶尔连接。当它连接时,我尝试了一些查询,创建了一个测试数据库和表,并尝试了以下内容:
代码:
declare @MaxLoops int = 100
declare @LoopCounter int = 0
while (@LoopCounter < @MaxLoops)
begin
set @LoopCounter = @LoopCounter + 1
--select SYSDATETIME(), * from NealTest.dbo.NealTest
waitfor delay '00:00:01'
print @LoopCounter
print SYSDATETIME()
end
Run Code Online (Sandbox Code Playgroud)
我编写脚本的初衷是查看在它“滚动”后我们是否会丢失连接,换句话说,我可以设置它并增加它@MaxLoops
并让它运行一个小时左右。(也可以添加 try/catch 以帮助它继续查看它们是否是偶发的连接问题。)
脚本(Select
注释掉了语句)给出了一个
传输级错误
所以我们开始一次突出显示一两行。声明工作正常,我可以在声明后打印值。当我们将其降低@MaxLoops
到 5 时,它实际上运行了。我们增加到 15 它失败了Transport-level …
目前在 SQL Server 2008/R2 上。我刚刚在这里读到“设置行数”在 2012 年发布的某些版本中已被弃用:http : //technet.microsoft.com/en-us/library/ms188774.aspx
我们有一些遗留代码可能使用它来删除小块数据并最大限度地减少我们每晚“数据清除”工作中的锁定。
如果没有行数,我将不得不使用“top xxx”来代替?
set rowcount 1000 /* Only delete this number of rows at a time */;
declare @short_time datetime2 = DATEADD(week,-1,SYSUTCDATETIME());
SET @TotalRowCount = 0
while ( select COUNT(1) from FlightAudit with (nolock) ) > @min_row_count
begin
delete FlightAudit where CreatedUTC < @short_time;
SET @SaveRowCount = @@ROWCOUNT
SET @TotalRowCount = @TotalRowCount + @SaveRowCount
if @SaveRowCount=0 break;
print 'delete from FuelerCertificationAudit...' + convert(varchar(10),@SaveRowCount) + ' Time=' + dbo.DateOrNullToChar(getdate())
end
print …
Run Code Online (Sandbox Code Playgroud) 我期待在由触发器创建的审计表,我们足够聪明来保存SUSER_NAME();
我们称为列LastUpdateRef
,但不是所有的旧代码已经更新为使用它(这是一个独一无二的代码,以帮助跟踪更新回到导致它们的代码)。
所以我知道有人正在更新,例如,TerminalId
在Transaction
表格中。我该如何回答这个问题?
向我显示所有在 Transaction 表上具有更新语句的存储过程,这些语句显式更改了 TerminalId
似乎这超出了任何易于编写的 RegEx。
一些更新语句采用这种格式,其中表名在FROM
:
update a
set
ArrivalDate = @ArrivalDateLocalTime,
LastUpdate = SYSDATETIME(),
LastUpdateRef = 'REFGFI168',
LastUpdateBy = @UserID
from Flight a where etc...
Run Code Online (Sandbox Code Playgroud) 我正在尝试将测试系统上的表同步到生产中的表。在生产中,尽管可能很糟糕,但我相信他们使用保留字 SITE 作为列名。
alter table MY_TABLENAME
modify ("SITE" varchar2(50),
LOCATION_ID varchar2(50)
)
;
Run Code Online (Sandbox Code Playgroud)
以上给出了错误:
ORA-00904: "SITE": 无效标识符
没有引号或括号的相同错误。