标签: sql-server

SQL Server 标准基本可用性组 - 只有 10 个侦听器限制?

可以使用 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

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

创建索引是否需要停机

我们有一张包含几百万行的生产表。我们运行了这个查询,它冻结了我们的数据库,

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 都有数百万行。

sql-server sql-server-2012

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

SQL Server 中的粒度安全

考虑具有以下结构的数据库:

[dbo].[客户]、[dbo].[地址]和[dbo].[报告]

模式

[dbo] 和 [报告]

我希望能够做的是让主体(可以是用户或角色)能够仅在报告模式中管理视图(创建、更改、删​​除)。此外,此主体将需要对 dbo 架构中的所有表的 SELECT 权限(以支持在报告架构中创建视图)。我希望能够做的最后一件事是仅在 dbo 架构中为报告表授予 INSERT、UPDATE 和 DELETE 权限。

这是可能的吗?我还没有找到正确的权限组合。我可以使用用户、角色等的任意组合来实现这一点。

sql-server

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

索引优化导致数据库大小增加

索引优化后数据库大小从114增加到140Gb,这正常吗?

进程完成后服务器RAM使用率不减少,保持在62Gb/98%

sql-server ola-hallengren

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

如何通过查询在sql中的日期列中添加循环?

如果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

1
推荐指数
2
解决办法
2万
查看次数

Tempdb 在不同数据库之间拆分文件/文件组

将数据库放在一个服务器实例上的一个常见问题是它们都共享相同的 tempdb。是否可以为单独的数据库分配 tempdb 文件/和文件组。资源调控器允许这样做吗?

数据库 1,只能访问 tempdb 中的一个文件/文件组 1。

数据库 2,只能访问 tempdb 中的一个文件/文件组 2。

performance sql-server filegroups tempdb performance-tuning

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

如何在 32 位服务器上获取 Sql Server 2016?

我没有构建它,但我们有一个 32 位的 Windows Server 2008,带有 SQL Server 2008 和 4GB 的 RAM。

我需要将它升级到 SQL Server 2016,以便将日志传送到新服务器,这样我们就可以摆脱困境。

问题 - 看起来 SQL Server 2016 至少需要 Windows Server 2012,它只有 64 位。

问题:如何将数据迁移到 SQL 2016 服务器,停机时间小于 1 天?

有没有办法通过兼容性级别来解决它?

sql-server-2008 sql-server sql-server-2016

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

利用触发器动态改变分区函数

我想利用基于 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)

database-design sql-server partitioning sql-server-2016

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

使用 OPENJSON 生成嵌套数组非常慢

我刚刚开始使用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)

sql-server json

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

计算总树结构

我有一个包含 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

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