可以使用 SQL Server Standard 创建的侦听器数量是否有限制?
我正在与使用 CU3 设置 2017 标准服务器的 DBA 合作。我们有 12 个数据库,他能够设置 12 个基本可用性组。他能够设置 10 个侦听器,但在 11 日,出现以下错误:
为可用性组侦听器“test12300”创建失败。(Microsoft.SqlServer.Smo)
如需帮助,请单击:http : //go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=14.0.17213.0+((SSMS_Rel).171128-2020)&EvtSrc=Microsoft.SqlServer.Management.Smo.ExceptionTemplates。 FailedOperationExceptionText&EvtID=Create+AvailabilityGroupListener&LinkId=20476
附加信息:
执行 Transact-SQL 语句或批处理时发生异常。(Microsoft.SqlServer.ConnectionInfo)
WSFC 群集无法使 DNS 名称为“test12300”的网络名称资源联机。DNS 名称可能已被使用或与现有名称服务冲突,或者 WSFC 群集服务可能未运行或可能无法访问。使用不同的 DNS 名称来解决名称冲突,或查看 WSFC 群集日志以获取更多信息。尝试为侦听器创建网络名称和 IP 地址失败。如果这是一个 WSFC 可用性组,WSFC 服务可能未运行或在其当前状态下可能无法访问,或者为网络名称和 IP 地址提供的值可能不正确。检查 WSFC 群集的状态并与网络管理员一起验证网络名称和 IP 地址。否则,请联系您的主要支持提供商。(Microsoft SQL Server,错误:19471)
如需帮助,请单击:http : //go.microsoft.com/fwlink?ProdName=Microsoft%20SQL%20Server&ProdVer=14.00.3015&EvtSrc=MSSQLServer&EvtID=19471&LinkId=20476
我们创建了 11 个空数据库,对每个数据库进行了备份,然后通过 AG 向导使用 DHCP 创建了一个 AG 和一个侦听器。它工作了 10 次,但在第 11 次失败了。对于第 11 个侦听器,我们选择了名称 BAG_L11,没有其他东西使用该 DNS 名称。
sql-server listener availability-groups standard-edition sql-server-2017
我们有一张包含几百万行的生产表。我们运行了这个查询,它冻结了我们的数据库,
USE ExampleDatabase
GO
CREATE NONCLUSTERED INDEX IX_Table1_URL
ON [dbo].[Table1] ([URL])
GO
GO
CREATE NONCLUSTERED INDEX IX_Table1_LastModified
ON [dbo].[Table1] ([LastModified])
GO
GO
CREATE NONCLUSTERED INDEX IX_Table2_URL
ON [dbo].[Table2] ([URL])
GO
GO
CREATE NONCLUSTERED INDEX IX_Table2_LastModified2
ON [dbo].[Table2] ([LastModified2])
GO
Run Code Online (Sandbox Code Playgroud)
我是一名对索引知识非常有限的开发人员,我不知道从哪里开始,只是添加 Table1 和 Table2 都有数百万行。
考虑具有以下结构的数据库:
表
[dbo].[客户]、[dbo].[地址]和[dbo].[报告]
模式
[dbo] 和 [报告]
我希望能够做的是让主体(可以是用户或角色)能够仅在报告模式中管理视图(创建、更改、删除)。此外,此主体将需要对 dbo 架构中的所有表的 SELECT 权限(以支持在报告架构中创建视图)。我希望能够做的最后一件事是仅在 dbo 架构中为报告表授予 INSERT、UPDATE 和 DELETE 权限。
这是可能的吗?我还没有找到正确的权限组合。我可以使用用户、角色等的任意组合来实现这一点。
索引优化后数据库大小从114增加到140Gb,这正常吗?
进程完成后服务器RAM使用率不减少,保持在62Gb/98%
如果ID = 01234并且此 ID 在一个月内进行了 3 次交易,如下所示:
***DAY_no Balance***
1/1/2018 5000
10/1/2018 10000
15/1/2018 12000
Run Code Online (Sandbox Code Playgroud)
我想要这样的数据:
***DAY_no Balance***
1/1/2018 5000
2/1/2018 5000
3/1/2018 5000
4/1/2018 5000
5/1/2018 5000
6/1/2018 5000
7/1/2018 5000
8/1/2018 5000
9/1/2018 5000
10/1/2018 10000
11/1/2018 10000
12/1/2018 10000
13/1/2018 10000
14/1/2018 10000
15/1/2018 12000
16/1/2018 12000
17/1/2018 12000
18/1/2018 12000
19/1/2018 12000
20/1/2018 12000
21/1/2018 12000
22/1/2018 12000
23/1/2018 12000
24/1/2018 12000
25/1/2018 12000
26/1/2018 12000
27/1/2018 12000
28/1/2018 12000
29/1/2018 12000
30/1/2018 12000 …Run Code Online (Sandbox Code Playgroud) performance sql-server subquery sql-server-2012 query-performance
将数据库放在一个服务器实例上的一个常见问题是它们都共享相同的 tempdb。是否可以为单独的数据库分配 tempdb 文件/和文件组。资源调控器允许这样做吗?
数据库 1,只能访问 tempdb 中的一个文件/文件组 1。
数据库 2,只能访问 tempdb 中的一个文件/文件组 2。
我没有构建它,但我们有一个 32 位的 Windows Server 2008,带有 SQL Server 2008 和 4GB 的 RAM。
我需要将它升级到 SQL Server 2016,以便将日志传送到新服务器,这样我们就可以摆脱困境。
问题 - 看起来 SQL Server 2016 至少需要 Windows Server 2012,它只有 64 位。
问题:如何将数据迁移到 SQL 2016 服务器,停机时间小于 1 天?
有没有办法通过兼容性级别来解决它?
我想利用基于 a 的分区[TenantId](稍后与日期范围结合使用)。我不需要在 中手动插入最新值PARTITION FUNCTION,而是考虑创建一个TRIGGER AFTER INSERT来提取[TenantId]值并将ALTER PARTITION FUNCTION其添加到 中SPLIT RANGE。然而,我遇到了一个意想不到的错误:
无法对/使用表“租户”执行 ALTER PARTITION FUNCTION,因为该表是目标表或当前正在执行的触发器的级联操作的一部分。
首先,我创建PARTITION FUNCTION [PF_Tenant_Isolation]和PARTITION SCHEME [PS_Tenant_Isolation]以便在 上进行分区[TenantId]。
CREATE PARTITION FUNCTION [PF_Tenant_Isolation] ([int])
AS RANGE LEFT FOR VALUES (1);
GO
CREATE PARTITION SCHEME [PS_Tenant_Isolation]
AS PARTITION [PF_Tenant_Isolation]
ALL TO ([Auth]);
GO
Run Code Online (Sandbox Code Playgroud)
接下来,我将[Tenant]根据新创建的分区方案创建表。
IF OBJECT_ID('[Auth].[Tenant]', 'U') IS NULL
BEGIN
CREATE TABLE [Auth].[Tenant] (
[TenantId] [int] IDENTITY(1,1)
,[TenantActive] [bit] …Run Code Online (Sandbox Code Playgroud) 我刚刚开始使用OPENJSONSQL Server 2016 SP1。
我有这句话:
select c.Serial as Parent,
(Select co.Serial, agc.Position
from AggregationChildren agc, Aggregation ag, Code co
where agc.AggregationId = a.AggregationId
and co.CodeId = agc.AggregationChildrenId for json path) as children
from Aggregation a, Code c
where c.CodeId = a.AggregationId for json path
Run Code Online (Sandbox Code Playgroud)
要生成此 JSON:
select c.Serial as Parent,
(Select co.Serial, agc.Position
from AggregationChildren agc, Aggregation ag, Code co
where agc.AggregationId = a.AggregationId
and co.CodeId = agc.AggregationChildrenId for json path) as children
from Aggregation a, Code c …Run Code Online (Sandbox Code Playgroud) 我有一个包含 object_id、object_name、derived_from_object_id 的表
我需要查看哪些函数才能根据提供的 object_id 提供派生总数?
例子
1 object1 0
2 object2 1
3 object3 1
4 object4 0
5 object5 3
6 object6 2
7 object7 3
8 object8 5
Run Code Online (Sandbox Code Playgroud)
没有定义从对象或子对象派生的最大数量。因此,如果我想要 objectid 1 的总数,结果将为 7。
我想过编写一个存储过程,它只是为每个对象 id 返回一个计数,然后它会为每个有子对象的 id 调用自己。虽然我认为这会奏效,但我认为这完全是错误的方向。
sql-server ×10
performance ×2
filegroups ×1
json ×1
listener ×1
partitioning ×1
subquery ×1
tempdb ×1