小编孔夫子*_*孔夫子的帖子

从远程机器连接到 NAT 后面的 SQL Server

这种情况是,这是一个位于企业防火墙后面的 SQL Server,您的标准设置只允许最少的出站流量和零入站流量。但是,根据通常的允许,端口 80/443 是开放的。

有没有人试过,或者有没有可能

  1. 使用 Telnet 连接到远程机器端口 80。
  2. 在本地机器上,注意绑定地址和端口[1],例如netstat
  3. 断开与 telnet 的连接。启动端口转发器并监听[1],映射到 SQL Server TCP/IP 监听器
  4. 在远程计算机上,连接到 SQL Server [1]

你怎么认为?我只需要完成一些测试,我不想一次性将庞大的数据库移到外面。我熟悉并使用UDP打洞进行NAT穿越,主要用于推送到手机,但我有兴趣知道这是否也适用于TCP。

参考:

我愿意接受其他建议。

网络拓扑结构

sql-server remote

6
推荐指数
1
解决办法
7328
查看次数

在同一台服务器上使用多个 SQL Server 实例进行横向扩展是否有利?

对于分布在 3 个时区的 9 个数据库的用例,将数据库分布到同一服务器上的多个 SQL Server 实例是否有利?

我会得到什么,又会失去什么?标记sql-server-2012是因为它最相关,尽管通常问题是跨 SQL Server 版本。

performance sql-server instance installation sql-server-2012

6
推荐指数
2
解决办法
8611
查看次数

更新所有行时出错

当我更新单行时,它工作正常。但是当我更新所有行时:

 UPDATE cad_bilhetes
 SET ligacao_acobrar = 'False'
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

消息 512,级别 16,状态 1,过程 TG_CAD_BILHETES_UPDATE,第 34 行子查询返回了 1 个以上的值。当子查询跟随 =、!=、<、<=、>、>= 或当子查询用作表达式时,这是不允许的。该语句已终止。

在 TG_CAD_BILHETES_UPDATE 的第 34 行中有:

DECLARE @VALOR_LIGACOES_DDI_ATUAL DECIMAL(7,2)
Run Code Online (Sandbox Code Playgroud)

触发器的开始:

ALTER TRIGGER [dbo].[TG_CAD_BILHETES_UPDATE]
ON [dbo].[CAD_BILHETES]
INSTEAD OF UPDATE
AS
BEGIN
DECLARE @ID INT
DECLARE @VALOR_BILHETE_NOVO DECIMAL(7,2)
DECLARE @VALOR_BILHETE_ATUAL DECIMAL(7,2)
DECLARE @ENCONTROU INT
DECLARE @ID_CONTRATACAO INT
DECLARE @TIPO VARCHAR(2)
DECLARE @TIPO_APARELHO VARCHAR(1)
DECLARE @ID_COMPETENCIA INT
DECLARE @ID_CONTRATACAO_ATUAL INT
DECLARE @ID_CONTRATACAO_NOVO INT
DECLARE @VALOR_LIGACOES_DDD_FIXO_NOVO DECIMAL(7,2)
DECLARE @VALOR_LIGACOES_DDD_MOVEL_NOVO DECIMAL(7,2)
DECLARE @VALOR_LIGACOES_LOCAL_MOVEL_NOVO DECIMAL(7,2)
DECLARE @VALOR_LIGACOES_LOCAL_FIXO_NOVO DECIMAL(7,2) …
Run Code Online (Sandbox Code Playgroud)

trigger sql-server-2005 sql-server

3
推荐指数
1
解决办法
1654
查看次数

通过创建聚集索引并立即删除它来对 HEAP 进行碎片整理

我正在编写一个脚本,它打算通过创建一个带有聚集索引的虚拟列然后立即删除它来对基于 HEAP 的表进行碎片整理。(这是别人的应用程序,我不想进行任何永久性更改 - 不过他们做得很好。)

ALTER TABLE my_heap ADD dummy BIGINT IDENTITY;
GO
CREATE CLUSTERED INDEX ix_dummy ON my_heap (dummy);
GO
-- need to wait here until index completes
DROP INDEX ix_dummy ON my_heap;
ALTER TABLE my_heap DROP COLUMN dummy;
GO
Run Code Online (Sandbox Code Playgroud)

当我运行脚本的各个步骤时,它工作正常。当我一次运行它时,似乎什么也没有发生(碎片级别不会下降)。我相信这是因为 DROP 发生在 CREATE CLUSTERED 完成之前 - 所以 CREATE CLUSTERED 没有时间做它的事情。

如何让 DROP 等待 CREATE CLUSTERED 完成?我正在为大约 30 张桌子这样做,所以我不想为每张桌子设置一个简单的等待延迟 15 分钟。

PS 使用 SQL Server 2005

index sql-server-2005 clustered-index scripting t-sql

3
推荐指数
1
解决办法
381
查看次数