AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-88609

Zikato's questions

Martin Hope
Zikato
Asked: 2023-09-08 17:55:42 +0800 CST

我可以更改 cdc 架构的所有者吗?

  • 9

我已使用以下命令在数据库上启用了更改数据捕获 (CDC)exec sys.sp_cdc_enable_db

这将创建一个由cdc用户拥有的新cdc架构

select
    s.*
    , dp.name
from sys.schemas as s
join sys.database_principals as dp
    on dp.principal_id = s.principal_id

在此输入图像描述

因为我想利用所有权链接并使用 proc 从此架构中读取数据,所以我可以将所有者更改为dbo吗?

ALTER AUTHORIZATION ON SCHEMA::cdc TO dbo

此命令起作用并更改所有者。但疾病预防控制中心已经启用了一段时间,我担心未来会进一步破坏一些东西。

security
  • 2 个回答
  • 116 Views
Martin Hope
Zikato
Asked: 2023-02-08 00:56:45 +0800 CST

为什么 sys.fn_xe_file_target_read_file 需要对 datetime2 列进行显式转换?

  • 14

根据文档,返回的列timestamp_utc应为datetime2(7)类型

但是当我这样查询时

SELECT 
    *
FROM sys.fn_xe_file_target_read_file('system_health*.xel', null, null, null)
WHERE timestamp_utc > dateadd(hour, -1, GETUTCDATE())

它不返回任何行。它仅在我向datetime2添加显式强制转换时才返回行

SELECT 
    *
FROM sys.fn_xe_file_target_read_file('system_health*.xel', null, null, null)
WHERE cast(timestamp_utc as datetime2(7)) > dateadd(hour, -1, GETUTCDATE())

与文档中的最后一个示例相匹配(即使没有引起注意)

在此处输入图像描述

这是为什么?

sql-server
  • 1 个回答
  • 203 Views
Martin Hope
Zikato
Asked: 2022-08-04 01:52:28 +0800 CST

在资源数据库中查找对象的名称 [重复]

  • 3
这个问题在这里已经有了答案:
定位资源系统数据库 3 个答案
3 个月前关闭。

我正在查看sys.dm_exec_function_stats视图以查找标量函数统计信息。该视图还包括 ID 为32767的数据库中的行,我发现它是Resource database。

其中一些 ID 可以传递给OBJECT_NAME()元OBJECT_DEFINITION()数据函数,但一些 ID 返回NULL

SELECT SERVERPROPERTY('ResourceVersion')  AS 'ResourceVersion'
SELECT SERVERPROPERTY('ResourceLastUpdateDateTime') AS 'ResourceLastUpdateDateTime' 

SELECT 
    defs.database_id
    , defs.object_id
    , OBJECT_NAME(defs.object_id) AS objName
    , OBJECT_DEFINITION(defs.object_id) AS objDef
    , OBJECT_NAME(defs.object_id, defs.database_id) AS objNameDB
    , OBJECT_DEFINITION(defs.object_id, defs.database_id) AS objDefDB
FROM sys.dm_exec_function_stats AS defs
WHERE defs.database_id = 32767

在此处输入图像描述

我可以在or in中找到fn_hadr_is_primary_replica函数 (object_id = -665919249) ,但在 object_id = -706609674 中找不到。sys.all_objectssys.all_sql_modules

有什么方法可以找到-706609674的对象名称或定义?

sql-server sql-server-2019
  • 1 个回答
  • 63 Views
Martin Hope
Zikato
Asked: 2022-01-28 00:58:55 +0800 CST

为什么 UPDATE FROM 失败并且 MERGE 在带有 INSTEAD OF 触发器的视图上工作?

  • 5

有时为了重构,我使用视图来抽象更改并使用INSTEAD OF触发器来模仿以前的功能。

我过去遇到过错误 414(或 415)

UPDATE 是不允许的,因为语句更新了视图“%.*ls”,它参与了一个连接并且有一个 INSTEAD OF UPDATE 触发器。

我可以将其重写UPDATE FROM为一个MERGE语句并且有效。但为什么?

我找到了这些参考资料,但没有一个回答原因。

https://stackoverflow.com/questions/3085036/update-is-not-allowed-because-the-statement-updates-view-table-name-which-part

https://social.msdn.microsoft.com/Forums/sqlserver/en-US/87c173b0-8f87-4aa3-b861-d40f23803a43/views-and-instead-of-update-trigger-limitation-why?forum=transactsql

https://sqlserverfast.com/blog/hugo/2008/03/lets-deprecate-update-from/

sql-server trigger
  • 1 个回答
  • 244 Views
Martin Hope
Zikato
Asked: 2021-09-10 00:52:25 +0800 CST

如何检查模型数据库上的查询存储设置?

  • 5

可以在模型数据库上启用查询存储,并确保每个新数据库都具有与模型数据库相同的设置。

缺少 GUI 选项

GUI 中缺少查询存储选项

但可以使用 TSQL 启用它

ALTER DATABASE model
SET QUERY_STORE = ON (OPERATION_MODE = READ_WRITE);

由于没有 GUI,我无法检查那里的默认设置。

再次使用 TSQL

USE model;
select * from sys.database_query_store_options;

返回空结果

模型数据库查询存储设置的空结果

当我创建一个新数据库时(使用模型作为模板并查询设置,它会显示结果)

create database TestQs;
go
use TestQs;
select * from sys.database_query_store_options;

TestQS 数据库的查询存储选项

此外,设置必须保存在某处,因为当我更改查询存储选项时,更改会传播到新数据库

ALTER DATABASE model
SET QUERY_STORE (INTERVAL_LENGTH_MINUTES = 22);

我尝试使用 SMO 找到这些选项,但没有运气。

$SqlServer = New-Object Microsoft.SqlServer.Management.Smo.Server -ArgumentList 'localhost'
$sqlServer.Databases['TestQs'].QueryStoreOptions

数据库 TestQS 返回选项

但是对模型数据库的相同查询没有产生任何结果

$SqlServer = New-Object Microsoft.SqlServer.Management.Smo.Server -ArgumentList 'localhost'
$sqlServer.Databases['model'].QueryStoreOptions

数据库模型返回空选项

有没有办法在不创建新数据库并在那里检查的情况下检查模型数据库上的查询存储设置?

sql-server sql-server-2019
  • 1 个回答
  • 164 Views
Martin Hope
Zikato
Asked: 2019-08-29 00:03:09 +0800 CST

如何重新创建具有相同设置的索引?

  • 4

我的情况是,我想将另一个包含的列添加到现有索引,但保持其余设置(例如 FILLFACTOR、ONLINE、SORT_IN_TEMPDB 等)相同。

  • 我在源代码管理中没有以前的版本
  • 我没有在 sys.indexes DMV 中找到它们中的大多数(FILLFACTOR 在那里,但不是在线)
  • 在对象资源管理器中查找索引并编写脚本会填充 ONLINE 设置的默认值(并省略 DATA_COMPRESSION)
  • 我没有在 OBJECTPROPERTY DMF 中找到该属性
  • Brent Ozar 的 sp_BlitzIndex 也不提供其中一些高级设置
  • sp_helpindex 为我提供了与父表上的 sp_help 相同的有限信息。
  • 我无法测试 WITH (DROP_EXISTING = ON) 是否使用相同的设置重新创建索引,因为我无法在任何地方找到设置。

有任何想法吗?

index t-sql
  • 1 个回答
  • 130 Views
Martin Hope
Zikato
Asked: 2019-04-26 03:14:10 +0800 CST

如何查找计算列中是否引用了列?

  • 6

我正在尝试批量重新输入列。这意味着首先删除并重新创建它们所属的任何约束。

我发现这些约束引用的列

  • 外键,
  • 主键,
  • 索引,
  • 检查约束,
  • 规则,
  • 默认约束。

但我找不到计算列。

我调查过INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE,但它不包括计算列。

还有sys.computed_columns一个显示定义,但不以可搜索的方式列出列。

还有其他地方可以看吗?如果 SQL Server 可以找出依赖关系,我想我也可以。

sql-server t-sql
  • 2 个回答
  • 754 Views
Martin Hope
Zikato
Asked: 2019-04-19 06:32:17 +0800 CST

为什么 SQL Optimizer 不使用我的约束?

  • 7

我想创建一个带有NOT NULLbool 列的表。
我使用TINYINTwithCHECK约束BETWEEN 0 and 1。约束是新的,因此是可信的

现在我希望 SQL 优化器现在知道该列只能是 0 和 1,所以当我编写查询时,col >= 2我会在实际执行计划中看到 Constant Scan(就像我检查NULL或SELECT TOP (0)

但事实并非如此,它选择了表扫描。我是否还需要在此列上有索引?

在下面的测试中,我使用TINYINT约束CHECK。基于TINYINTwith boundRULE和 good old的用户定义类型BIT。

GO
CREATE TYPE dbo.myBool 
FROM [INT] NOT NULL
GO

CREATE RULE dbo.R_Bool AS @value BETWEEN 0 AND 1
go

EXEC sys.sp_bindrule @rulename = N'R_Bool'
                   , @objname = N'myBool'
GO 


DROP TABLE IF EXISTS dbo.RuleTest
CREATE TABLE dbo.RuleTest
(
    Id INT NOT NULL IDENTITY(1,1) PRIMARY KEY CLUSTERED
    , oldSchoolBool TINYINT NOT NULL CHECK (oldSchoolBool BETWEEN 0 AND 1)
    , customBool dbo.myBool NOT NULL
    , myBit BIT NOT NULL
)

;WITH tally (n)
AS
(
    SELECT 
        ROW_NUMBER() OVER (ORDER BY (SELECT NULL))
    FROM        (VALUES (0), (0), (0), (0), (0), (0), (0), (0), (0), (0))   AS a(n)
    CROSS JOIN  (VALUES (0), (0), (0), (0), (0), (0), (0), (0), (0), (0))   AS b(n)
    CROSS JOIN  (VALUES (0), (0), (0), (0), (0), (0), (0), (0), (0), (0))   AS c(n)

)
INSERT INTO dbo.RuleTest 
(oldSchoolBool, customBool, myBit)
SELECT
    ABS(CHECKSUM(NewId())) % 2 
    ,ABS(CHECKSUM(NewId())) % 2 
    ,ABS(CHECKSUM(NewId())) % 2 
FROM tally t

SET STATISTICS IO ON;

SELECT * FROM dbo.RuleTest rt
WHERE rt.oldSchoolBool IS NULL


SELECT * FROM dbo.RuleTest rt
WHERE rt.oldSchoolBool >=2 

go
SELECT * FROM dbo.RuleTest rt
WHERE rt.customBool >=2 
go
SELECT * FROM dbo.RuleTest rt
WHERE rt.myBit >= 2

SET STATISTICS IO OFF;

我看到一个用于 NULL 检查的常量扫描和 3 个用于其余部分的表扫描。

t-sql sql-server-2016
  • 1 个回答
  • 322 Views
Martin Hope
Zikato
Asked: 2019-01-11 00:42:04 +0800 CST

仅在时间窗口内捕获扩展事件直方图

  • 1

我们在周末的晚上有一个有问题的时间窗口。我想设置多个扩展事件会话来捕获一些数据并获得洞察力。

他们中的大多数将针对一个文件,我可以稍后阅读,但我的问题是直方图。

我可以配置一个作业来改变 XE 会话在特定时间开始,但我不能停止会话,因为它会从内存中删除直方图数据。

AFAIK 在运行时,我无法将直方图结果从内存保存到磁盘。

如果我在实际事件上设置时间戳谓词(尚未测试)并让 XE 会话在周末运行并在周一读取结果,也许有一种方法可以只捕获直方图中的数据。

还有其他方法可以仅在特定时间窗口内捕获直方图结果吗?

sql-server monitoring
  • 1 个回答
  • 75 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve