小编Joh*_* N.的帖子

断开数据库用户和 SQL Server 登录名之间的链接

将数据库从一个实例还原到另一个实例时,有时必须将 SQL Server 登录名重新链接到数据库用户。

这通常是通过以下程序之一来实现的。

不推荐使用的 sp_change_users_login 存储过程

use <database>
go
sp_change_users_login 'Update_one', '<datbase_user>', '<sql server login>' 
go
Run Code Online (Sandbox Code Playgroud)

更改用户命令

use <database>
go
ALTER USER [<datbase_user>] WITH LOGIN = [<sql server login>]
go
Run Code Online (Sandbox Code Playgroud)

这些命令会将孤立的数据库用户重新链接到相应的 SQL Server 登录名。

是否可以在不删除 SQL Server 登录名或数据库用户的情况下打破这种关系?

原因

  • 删除数据库用户将删除数据库中的权限。
  • 删除 SQL Server 登录名将删除密码。(散列值;DBA 未知)
  • 我将数据库用户链接到作为Windows 系统帐户的 SQL Server 登录名。

研究

我已经查看了DMVsys.database_principalssys.server_principalsDMV,但它们不可修改。

security sql-server permissions sql-server-2016

11
推荐指数
2
解决办法
838
查看次数

使用页面压缩时的行开销是多少?

我创建了一个包含 650 个 Numeric(19,4) 列的表。当我打开页面压缩时,通过运行

ALTER TABLE fct.MyTable REBUILD  WITH (DATA_COMPRESSION = PAGE);
Run Code Online (Sandbox Code Playgroud)

我得到

消息 1975,级别 16,状态 1
索引“PK_Mytable”行长度超过了“8060”字节的最大允许长度。

但是 650 乘以 9 字节仅为 5850 字节,这与规定的 8060 字节的限制相去甚远。

服务器运行的是 Windows 2012 r2 和 SQL Server 2016 SP1 CU2

使用页面压缩时的行开销是多少?

这是一些代码来显示我的意思:

/* test script to demo MSG 1975 */
DECLARE @sql NVARCHAR(max)='', @i INT =0
drop table if exists dbo.mytable;

SET @sql = 'Create table dbo.Mytable (MyTableID bigint not null 
  identity(1,1) primary key clustered, '

WHILE @i < 593 BEGIN
    SET …
Run Code Online (Sandbox Code Playgroud)

data-pages compression sql-server-2016

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

是否可以在 LIKE 语句上进行 PIVOT

是否可以按表中的元素(如COLUMN LIKE='Value%')进行分组PIVOT?我有一个表 [DBT].[Status],其中包含各种状态(数据库、实例等),并且不想将所有 PROD 和 TEST 值作为单个值进行透视/查询,而是将它们分组。

例如代替具有用于状态列ProdProd ACCProd APP,...等。我将仅有一个包含的值列Name LIKE 'Prod%'Name LIKE 'Test%'

到目前为止我所拥有的:

表定义

CREATE TABLE [DBT].[Status](
    [ID] [int] IDENTITY(1,1) NOT NULL,
    [Name] [nvarchar](50) NOT NULL,
 CONSTRAINT [PK_Status] PRIMARY KEY CLUSTERED 
(
    [ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 80) ON [PRIMARY],
 CONSTRAINT [IX_Status] UNIQUE NONCLUSTERED 
(
    [Name] ASC
)WITH (PAD_INDEX …
Run Code Online (Sandbox Code Playgroud)

sql-server pivot sql-server-2014

10
推荐指数
2
解决办法
851
查看次数

列列表中带有 , * 的 SELECT 语句比不带 * 的相同语句更快

情况

\n

当使用具有定义的列集的 SELECT 语句查询数据库时,大约 21 秒内就会收到结果。

\n

, *如果定义的列集列表末尾有一个附加星号 ( ),则查询将在 2 秒内返回结果。

\n

查询执行计划

\n

执行计划差异很大。

\n

您可以通过 PasteThePlan 中的链接找到良好的实际查询执行计划不良的实际查询执行计划。

\n

列列表中包含 , * 的语句(在末尾)

\n
\n            SELECT    -- DISTINCT -- 27.04.2020\n                \'SchuelerKlasse\' AS EcoQuery,\n                VX_PERSON.PER_MAN_ID, VX_PERSON.PER_ID, VX_PERSON.PER_NAME, VX_PERSON.PER_VORNAME, VX_PERSON.PER_LB_PER_ID, \n                VX_PERSON.PER_GESCHLECHT, VX_PERSON.PER_GEBURTSDATUM, VX_PERSON.PER_TELP, VX_PERSON.PER_MAILP, VX_PERSON.PER_NATP, VX_PERSON.PER_VERSICHERTENNUMMER, VX_PERSON.PER_LAND,\n                VX_ADRESSE.ADR_STRASSE, VX_ADRESSE.ADR_PLZ, VX_ADRESSE.ADR_ORT,\n                VX_KLASSE.KL_CODE, VX_KLASSE.KL_BEZEICHNUNG,\n                VX_KLASSEABSCHNITTSCHUELER.KAS_ANMELDE_STATUS, \n                VX_KLASSEABSCHNITTSCHUELER.KAS_ANMELDETYP, VX_KLASSEABSCHNITTSCHUELER.KAS_ABSCHNITTSNR,\n                VX_KLASSE_ZEITRAUM.KLZ_IS_ABSCHLUSSKLASSE, VX_KLASSE_ZEITRAUM.KLZ_ZR_NR,\n                VX_ZEITRAUM.ZR_BEGINN, VX_ZEITRAUM.ZR_ENDE\n                ,\'\' AS FA_CODE\n                ,\'\' AS FA_BEZ_STP, \'\' AS FA_BEZ_STP_LANG\n                , \'\' AS EcoOrig_FA_CODE, …
Run Code Online (Sandbox Code Playgroud)

sql-server execution-plan index-tuning sql-server-2014

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

PostgreSQL 9.2 - 9.6 零停机升级

我必须从 PostgreSQL 9.2 升级到 9.6。以下是我面临的挑战:

  1. 由于我们有流式复制设置,并且PostgreSQL在流式复制模式下不支持从低到高的版本升级,当我升级主时,我必须重建从属,这需要3个小时。我没有那个时间可以闲下来。在任何给定的时间,我们都需要一个从站和一个主站可用。有没有其他方法可以升级而不必重建从属设备,使用流式复制?

  2. 为了构建逻辑复制,我们考虑使用 slony 但 slony 有一些限制,因为它不会自动复制:

    • 对大对象 (BLOBS) 的更改
    • DDL 命令所做的更改
    • 对用户和角色的更改
      ……我们的应用程序具有连续的创建命令。所以我们不能使用 slony。

请提出一些建议,以避免从属重建,并以最少的停机时间进行升级,并准备好一主一从。

postgresql upgrade

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

理解 sys.objects、sys.system_objects 和 sys.sysobjects?

在这个问题中,我正在使用sys.sysobjects. 但是,提到的答案之一sys.system_objects。我只是想知道这些表之间有什么区别?

  • sys.objects
  • sys.system_objects
  • sys.sysobjects

sysobjects 有更多的东西。

> SELECT count(*) FROM sysobjects;
2312

> SELECT count(*) FROM sys.system_objects;
2201

> SELECT count(*) FROM sys.objects;
> 111

SELECT count(*)
FROM sys.sysobjects
WHERE NOT EXISTS (
  SELECT 1
  FROM sys.system_objects
  WHERE system_objects.object_id = sysobjects.id
);
> 111
Run Code Online (Sandbox Code Playgroud)

sql-server database-internals system-tables

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

将 SQL Server Analysis Services (SSAS) 配置为在与 SQL Server 实例相同的 IP 上运行

TL; 博士

我想将SQL Server 2014 Analysis Services添加到SQL Server的特定实例并以这样的方式对其进行配置,即 Analysis Services (SSAS) 和未来的 Reporting Services (SSRS) 将仅接收对特定实例的请求IP,为了让SQL Server Browser 服务保持在停止状态。


先决条件

对于运行多个 SQL Server 2014 实例的单个 Windows Server,我有以下先决条件:

基本信息

- 2 x 网卡
- 12 个 IP 地址
- 10 个 SQL Server Server 服务实例(正在运行)
- 10 个 SQL Server 代理服务器服务实例(正在运行)
- 1 x SQL Server 浏览器服务(未运行)

网卡配置

Windows Server NIC 的配置如下:

- 1 x NIC(备份网络) 
    - 10.2.0.1 
- 1 x 网卡 (LAN) …

sql-server ssas configuration sql-server-2014 sql-server-2016

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

备份 SQL Server 2016 实例登录

我需要备份 SQL Server 2016 的实例,我已经每晚备份了所需的数据库,但是我需要备份实例的用户和角色..... 我该怎么做?内置作业或自定义 T-sql 我可以安排运行吗?

如果有人能指出我正确的方向,我对 SQL 不太擅长

backup sql-server-2016

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

尽管使用“冲突时不执行任何操作”,为什么串行主键仍会递增?

我在 PostgreSQL 13 中有下表:

表名:新表

field       type 
-----       ----    
Seq         bigserial   
code        varchar     
Run Code Online (Sandbox Code Playgroud)

Seq是主键(自增)
Code是唯一键索引

Insert Into newtable (Code) Values ('001') On Conflict(Code) Do Nothing   --> Seq value is 1
Insert Into newtable (Code) Values ('001') On Conflict(Code) Do Nothing
Insert Into newtable (Code) Values ('001') On Conflict(Code) Do Nothing

Insert Into newtable (Code) Values ('002') On Conflict(Code) Do Nothing   --> Seq value is 4
Run Code Online (Sandbox Code Playgroud)

为什么是序列4?有什么方法可以仅在成功插入时增加价值?

postgresql sequence upsert postgresql-13

8
推荐指数
2
解决办法
7236
查看次数

如何以小时为单位设置 MySQL binlog 保留时间?

我的情况是 MySQL 日志分区在不到一天的时间内就被填满了。我无法禁用二进制日志,因为我需要它们进行复制。

我知道我可以设置日志保留时间,但它接受天数,搜索只显示我这个https://serverfault.com/questions/179165/can-expire-logs-days-be-less-than-1-day-in -mysql问题,建议通过脚本自己完成。

由于这个问题已经有将近 8 年的历史了,我想知道现在是否有可能。

如果重要,我正在使用 Percona MySQL 5.7

mysql percona mysql-5.7

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