AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

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

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
主页 / dba / 问题

问题[sql-server](dba)

Martin Hope
TTT
Asked: 2023-03-25 04:32:36 +0800 CST

后悔一个身份:有没有办法强制插入指定身份列?

  • 10

为了防止XY 问题,这是我们试图解决的实际问题:

问题:

不幸的是,我们有一堆查找表是在主键上使用标识列创建的,它是一个int. 我们希望我们可以简单地删除标识,但是,我们有一些带有指向标识列的外键的大表,我的理解是在这种情况下删除标识很困难。我们后悔身份的原因是因为这些表需要跨多个环境同步,开发人员通过编写脚本向这些表中插入数据,而我们在多个环境中运行这些脚本但不一定总是以相同的顺序,所以我们问开发人员始终:

  1. 启用标识插入
  2. 插入具有硬编码整数 ID 的行
  3. 禁用标识插入

如果每个人都这样做,数据要么保持同步,要么脚本失败,我们可以立即采取纠正措施来解决冲突。但是当然,有时开发者会忘记遵守规则,只是不加标识地插入,不同环境下不同顺序运行的不同脚本的自增导致它们不同步,然后问题就出现了。

一个想法:

我们可以强制开发人员始终指定标识列吗?我不认为有一种方法可以简单地禁用这些表上的标识。如果我们将身份重新播种到一个小数字怎么办?当种子值已经存在时,任何未指定所有列的插入都将失败,并继续失败,直到插入尝试的次数超过现有(连续)行数。但是在一次正确的插入之后,重新为表播种,下一次不正确的插入将再次使用自动增量。所以这个想法的外推是在每次插入后将表重新播种到一个较低的现有数字(可能使用触发器,这感觉很奇怪,但可能有效?),或者按计划,或者每次我们运行开发人员的脚本时.

这是一个合理的想法,和/或是否有更好的解决方案?

旁注:我们确实有一些其他的想法,我认为这些想法超出了这个问题的范围,例如:

  1. 一个门控签入,它会解析脚本以插入某些表而不指定标识列,如果我们检测到这一点就会失败。
  2. 将所有这些数据存储在源中,并在部署时更新整个表。(而不是使用运行一次的插入脚本。)
  3. 不要在所有环境中运行更改这些表的数据脚本,而是使用复制或其他同步机制。

尽管从长远来看,这些其他想法可能会更好,但似乎最容易实现的目标只是重新播种这些表,因此不正确的插入将失败。

sql-server
  • 3 个回答
  • 552 Views
Martin Hope
ChrisCorner
Asked: 2023-03-24 21:30:59 +0800 CST

无法在使用数据迁移助手突出显示的 SSMS 中找到对象

  • 6

数据迁移助手工具中突出显示了Syntax issue on the source server有关对象语法的重大更改,但我无法找到该对象。

我在 sys.objects、SSMS 中的对象资源管理器详细信息和使用 RedGate SQL 搜索中进行了搜索,但找不到具有此名称的对象。

我在下面添加了详细信息 -

  • 数据库兼容性:100(2008 年)至 150(2019 年)(突破性变化显示从可梳理性 100 开始通过 DMA)

  • 对象:“数据库名称”_DB_MGMT_SPEC

来自 DMA 的错误 -

在源数据库上解析模式时,发现一个或多个语法问题。源数据库上的语法问题表明某些对象包含不受支持的语法,因此所有评估规则都未在该对象上运行。

对象 ['DBName'_DB_MGMT_SPEC] 有语法错误。Incorrect syntax near .. 错误号46010。更多细节请看:第2行,第23列。

我发现了这个类似的问题,但没有解决方案 https://social.msdn.microsoft.com/Forums/en-US/4f9d9330-2e91-454e-b97d-7d4272e1e109/need-to-identify-object-mentioned-in-data- migration-assistant-for-sql-server-upgrade-from-2008r2-to?forum=sqlservermigration

sql-server
  • 1 个回答
  • 20 Views
Martin Hope
Tim
Asked: 2023-03-24 19:44:29 +0800 CST

在 SQL Server T-SQL 中将十六进制字符串表示形式转换为十六进制数

  • 5

我得到了一个数据集,其中十六进制数字已存储为旨在对人友好的准十六进制字符串表示形式,例如“16A1”。T-SQL 中是否有转换函数可以将字符串“16A1”或其修改版本转换为十六进制数0x000016A1?

sql-server
  • 2 个回答
  • 39 Views
Martin Hope
Ceci A.
Asked: 2023-03-23 18:42:02 +0800 CST

MS SQL 中 IF NOT EXISTS 查询的问题

  • 7

我想编写查询脚本来验证是否没有现有的列测试以在检查条件后添加它。但是在这两种方式中它不起作用。

方式一:

IF [dbo].[TEST].TEST NOT EXISTS
BEGIN
 ALTER TABLE [dbo].[TEST] ADD TEST INT;

方式二:

ALTER TABLE [dbo].[TEST] ADD TEST INT
where NOT EXISTS in ([dbo].[TEST].TEST);
sql-server
  • 1 个回答
  • 209 Views
Martin Hope
Olivier
Asked: 2023-03-22 23:41:38 +0800 CST

从文本创建层次结构

  • 4

我正在尝试从表格中的文本字段创建层次结构。

从视觉上很容易看出谁是父母和孩子。

例如:(见表格结果截图)

1M
-----1M5
----------1M5.5445
----------1M5.6
AC
-----AC
----------AC.1
----------AC.2
----------AC.3
AD
-----AD.1
-----AD.2
-----AD.3

请注意,字符串中的点并不总是存在且不变。

我怎样才能建立这个可以有多个级别的父子层次结构?

在此处输入图像描述

Microsoft SQL Server 2012 (SP2-GDR) (KB3194719) - 11.0.5388.0 (X64)

sql-server
  • 1 个回答
  • 59 Views
Martin Hope
gotqn
Asked: 2023-03-22 18:06:21 +0800 CST

在 SQL Server 中使用“sp_execute_external_script”替代“sp_invoke_external_rest_endpoint”

  • 5

当数据库(SQL Server 数据库)中发生某些事件时,我们有一个业务需求能够请求 HTTP 端点。我们有一个我们控制的端点目录。我们同时使用 SQL Server 2019 和 2022。

目前我们使用Service Broker External Activator,效果很好,但这项技术已经过时,据我们所知,微软不再支持它。此外,设置/实施相当复杂,管理层将其标记为“不可行”。

当我们在 Azure 中工作时,我们将使用新的 sp_invoke_external_rest_endpoint 来调用将发出请求的 Azure 函数。这工作正常,我们将在 Azure 中使用它。

不幸的是,此过程在 SQL Server 2022 的标准本地版本中不可用。这就是我们计划使用EXECUTE sp_execute_external_script @language = N'Python'请求 HTTP 端点的原因。

我们已经在生产中使用了 SQL Server 机器学习服务,因此我们在 SQL Server 2019 和 2022 上都提供了这些服务。我们测试了该实现,它似乎运行良好,尽管有点慢。

我们想知道:使用 Python 调用 HTTP 端点是否存在我们目前在评估中遗漏的重大缺点?

以下是我们用于概念验证的代码示例:

CREATE PROCEDURE [dbo].[usp_APICalls_HTTPRequest]
    @URL NVARCHAR(100),
    @Method VARCHAR(50),
    @HeadersJSON NVARCHAR(MAX),
    @BodyJSON NVARCHAR(MAX) = NULL,
    @BodyParams NVARCHAR(MAX) = NULL,
    @StatusCode VARCHAR(50) = NULL OUTPUT,
    @ResponseBody NVARCHAR(MAX) = NULL OUTPUT
AS
    EXECUTE sp_execute_external_script @language = N'Python',
    @script = N'
import datetime
import json
import requests
 
print("")
print("Script started {:%Y-%m-%d %H:%M:%S}".format(datetime.datetime.now()))
print("")
 
objHeaders = json.loads(HeadersJSON)

if BodyJSON:
    payload = json.dumps(json.loads(BodyJSON))
else:
    payload = BodyParams
 
objReqResponse = requests.request(Method, URL, headers=objHeaders, data=payload)
 
objResponse = {
    "StatusCode": [objReqResponse.status_code],
    "Body": [objReqResponse.text]
}
 
StatusCode = str(objReqResponse.status_code)
ResponseBody = objReqResponse.text
 
print("")
print("Script complete {:%Y-%m-%d %H:%M:%S}".format(datetime.datetime.now()))
print("")
 
    ',
        @params = N'@URL NVARCHAR(100),
                    @Method VARCHAR(50),
                    @HeadersJSON NVARCHAR(MAX),
                    @BodyJSON NVARCHAR(MAX),
                    @BodyParams NVARCHAR(MAX),
                    @StatusCode VARCHAR(50) OUTPUT,
                    @ResponseBody NVARCHAR(MAX) OUTPUT',
        @URL = @URL,
        @Method = @Method,
        @HeadersJSON = @HeadersJSON,
        @BodyJSON = @BodyJSON,
        @BodyParams = @BodyParams,
        @StatusCode = @StatusCode OUTPUT,
        @ResponseBody = @ResponseBody OUTPUT
 
GO
sql-server
  • 1 个回答
  • 57 Views
Martin Hope
Java
Asked: 2023-03-22 02:41:05 +0800 CST

如何从“只读”模式更改为“待机/只读”模式?

  • 5

我使用以下语句将数据库 (foo) 模式从“备用/只读”更改为活动:

restore database foo with recovery

之后,我使用以下语句将模式改回 Active:

ALTER DATABASE foo SET READ_WRITE

然后,我在这里使用用户界面改回“只读”:

属性 --> 选项 --> 状态 --> 数据库只读 --> 更改为“True”:

在此处输入图像描述

现在,我正试图回到原来的状态“ Standby / Read-Only ”模式(原始)。

我该怎么做呢?

sql-server
  • 1 个回答
  • 48 Views
Martin Hope
Java
Asked: 2023-03-22 02:25:17 +0800 CST

为什么会出现(In Recovery)指示?

  • 5

我刚刚注意到该数据库当前处于“恢复中”模式。

如何改回正常模式(没有(In Recovery))?

这是一个非常活跃的数据库,我正在努力对正在发生的事情非常小心。

在此处输入图像描述

更新:“恢复中”指示消失了。它为什么这样做?我唯一做的就是停止和启动 SQL Server。

sql-server
  • 2 个回答
  • 49 Views
Martin Hope
Fajela Tajkiya
Asked: 2023-03-21 13:22:59 +0800 CST

我应该使用哪个 SQL Server 管理器:C:\Windows\System32 或 C:\Windows\SysWOW64?

  • 7

我正在使用 SQL Server,我需要访问 SQL Server 管理器。但是,我注意到有两种不同的访问路径:C:\Windows\System32\SQLServerManager16.msc和C:\Windows\SysWOW64\SQLServerManager16.msc. 我不确定使用哪一个。谁能解释这两条路径之间的区别以及推荐使用哪一条路径?

sql-server
  • 2 个回答
  • 356 Views
Martin Hope
Sidney
Asked: 2023-03-21 02:53:01 +0800 CST

创建索引然后删除它是否会将数据库返回到索引创建前的状态?

  • 14

我正在测试一些索引,并想对哪些索引执行得更好进行一些 AB 测试(主要是索引中字段的顺序和指定的其他字段)。

我有一个正在测试的数据库的备份,但该备份需要很长时间才能恢复。我更愿意只创建索引 foo,收集性能指标,然后删除 foo 以将数据库返回到索引前状态并创建索引 bar。这是创建索引的工作方式,还是创建索引会以某种删除索引无法撤消的方式更改表?

sql-server
  • 4 个回答
  • 1076 Views

Sidebar

Stats

  • 问题 199037
  • 回答 263511
  • 最佳答案 131755
  • 用户 66345
  • 热门
  • 回答
  • 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