我最近看到一个奇怪的案例,但仍然不知道它背后的原因是什么。在我的一台开发服务器上,有两个 SQL 服务器实例正在运行——一个是默认的,另一个是 UAT 实例。
最近,我们对这两个实例的默认端口进行了更改,并将相同的内容传达给开发团队和其他利益相关者,以开始他们的更改并对其进行测试。为了不影响他们现有的应用程序,端口 1433 保持在默认实例上。因此,以下是要连接的服务器和端口的详细信息:
默认连接 --> Server_Name,35683
Named(SIT) 实例的连接 --> Server_Name\SIT,35685
两个实例都具有相似的数据库,但是由于它们指向不同的环境,因此数据集不同。
一位高级开发人员使用连接作为 Server_name\SIT,35683 意味着实例和端口不匹配。他正在使用 SIT 实例但是默认实例的端口,它将他连接到默认实例。
当我在他的办公桌前并且我们正在测试一些代码时发现了这一点,我注意到了这一点,因为我的更改没有反映在默认实例中,因为我在 SIT 实例中进行了更改。
有人可以解释这种行为以及如何解决这个问题吗?
我们有两台装有 SQL Server 2005 的数据库服务器,每台服务器有两个数据库。辅助服务器有两个 SQL Server 实例:一个用于开发,另一个用于报告。辅助服务器上的两个实例每天从主服务器恢复备份,但只有开发实例可以进行数据修改。
这两个数据库来自不同的应用程序,但一个数据库具有更改另一个数据库上的数据的触发器。触发器更新第二个数据库硬编码其名称,如UPDATE database2..thetable
一个数据库可以通过来自一个应用程序或存储过程的 SQL 查询从另一个数据库获取数据,硬编码为 SELECT FROM database2..thetable
我们正在考虑在辅助服务器(报告和开发)上加入两个 SQL Server 实例以简化管理和内存管理,但我找不到解决方案让触发器和存储过程动态地自动调用另一个数据库,并使用另一个名称使用相同的名称后缀。前任:
实例:RS
实例:DEV
进入:
对此有哪些可能的解决方案?我可以考虑一些,但它们太复杂了:
创建要通过 EXEC() 执行的动态 T-SQL。这让事情变得更加复杂,因为触发器有很多用于 UPDATES、INSERTS 和 DELETES 的代码。
为每组数据库名称创建单独的触发器和存储过程(一个用于 DB1,另一个用于 DB1_DEV,另一个用于 DB1_RS)。这种方法似乎无法扩展......
使查询中的数据库名称动态:INSERT INTO @db..table。不幸的是,SQL Server 不支持这个... :-(
有没有更简单有效的解决方案?
谢谢!
我想让我的数据库在打开时停止实例恢复,怎么做?
我想要它,因为它在尝试进行实例恢复时崩溃,我正在测试某些情况并想禁用它
有没有可能?
当我在同一台计算机上安装多个 SQL Server 实例时,每个实例都会获得自己的用于 Analysis Services 和 Reporting Services 的 SQL Server 服务。但是我只得到一个集成服务的服务,为什么?
我的客户安装了 SQL Server 2012 默认实例。但是默认实例的文件夹和数据文件夹在同一个磁盘上。
我想将默认实例的文件夹移动到另一个磁盘 ( C:Program Files\Sql Server\)。
我可以在不卸载现有实例然后安装新实例的情况下执行此操作吗?
自从我上次尝试运行我在某家银行公司的最后一次实习中从事的最后一个项目以来,已经过去了一个星期。
突然,我在Eclipse 中的webapps(Java 项目)无法启动。在日志中,它说它无法连接到 Oracle 数据库,其中包含一些错误侦听器。所以我尝试从 SQL 开发人员手动连接数据库。它说
ORA-12528: TNS:Listener: 所有适当的实例都在阻止新连接。
我已经阅读了一些解决方案,并尝试重新启动 Oracle 服务,包括 orcl 和侦听器。我重新启动后,错误变为
ORA-12505: TNS:listener 当前不知道连接描述符中给出的 SID。
过了一会儿,它又变成了 ORA-12528。有人可以帮忙吗?我的论文答辩是下周。
alert_ORCL.txt 日志(SID=ORCL):
***********************************************************************
Fatal NI connect error 12641, connecting to:
(LOCAL=NO)
VERSION INFORMATION:
TNS for 32-bit Windows: Version 11.2.0.1.0 - Production
Oracle Bequeath NT Protocol Adapter for 32-bit Windows: Version 11.2.0.1.0 - Production
Windows NT TCP/IP NT Protocol Adapter for 32-bit Windows: Version 11.2.0.1.0 - Production
Time: 05-MAR-2015 21:28:24
Tracing not turned on.
Tns error struct:
ns main …Run Code Online (Sandbox Code Playgroud) 所以,我知道实例有 3 种启动模式可用,即 NOMOUNT、MOUNT 和 OPEN。我想知道的是在 NOMOUNT 模式下,它声明实例已启动但仍未与数据库关联,那么谁激活实例?是数据库本身还是其他东西?
如果我使用该命令,shutdown那么是只有实例关闭了还是数据库也关闭了?
提前致谢!
我有一个问题我很困惑。我对数据库也很陌生,所以这个问题可能很基本。
例如,在我的工作中,我们使用 SSMS 连接到服务器的数据库。
从 SSMS 连接时,我们输入 ( server_name\instance )。比如说PC100\SQLexpress。
但对于某些人来说,只输入服务器,而不输入实例。这是如何运作的?我认为为了连接,我们总是需要在服务器名称后输入一个实例?
例如,我们需要一些PC100\SQLexpress连接到服务器的数据库。然后对于其他的我们只需要输入PC200连接,而不需要输入实例。
谁能解释一下吗?
我的服务器中有两个实例,我想知道其中哪一个是默认实例。请你指出我可以识别它的方法。通过说默认实例,我的意思是监听 1433 的实例。
谢谢您的支持。
我很确定我想要的当前实现是不可能的,sys.databases 目录视图在服务级别范围内可以了解其他 SQL Server 实例 (lol)。但我认为很多事情用电脑是不可能的,所以希望我能用不同的方式解决我的问题。
我已经创建了一个 PowerShell 解决方案,该解决方案使用 SMO 来备份所有实例上的所有数据库,但是由于安全原因,我无法在不将运行代理作业的代理帐户设为本地管理员的情况下使该解决方案工作服务器。
作为替代方案,我编写了一个 T-SQL 脚本,该脚本将作为代理作业运行,并每 15 分钟对 SQL Server 实例中的所有数据库进行完整、差异或事务备份。
DECLARE @sql nvarchar(MAX) = N'';
--Check time for full backup
IF (DATENAME(weekday,getdate()) = 'Sunday' AND convert(time,getdate()) > '00:00' and convert(time,getdate()) < '00:15')
BEGIN
SELECT @sql += 'BACKUP DATABASE ' + QUOTENAME(name)
+ ' TO DISK = N''C:\backups\' + @@ServiceName + '_' + name + '__'
+ cast(year(getdate()) as nvarchar(4)) + '_' + cast(month(getdate()) as nvarchar(2)) + '_' + cast(day(getdate()) as nvarchar(2)) …Run Code Online (Sandbox Code Playgroud)