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
    • 最新
    • 标签
主页 / coding / 问题

问题[sql-server](coding)

Martin Hope
Stevoisiak
Asked: 2025-04-24 04:10:29 +0800 CST

SQL Server 中非美国英语语言的 DATEFIRST 默认值是什么?

  • 5

SQL Server 有一个DATEFIRST设置,用于确定日期计算的一周的第一天。

SELECT DATENAME(weekday, '2025-04-23') AS WeekdayName  -- Wednesday

SET DATEFIRST 7  -- Sunday
SELECT DATEPART(weekday, '2025-04-23') AS WeekdayNumber  -- 4

SET DATEFIRST 1  -- Monday
SELECT DATEPART(weekday, '2025-04-23') AS WeekdayNumber  -- 3

根据微软的文档DATEFIRST,美国英语的默认值是 7(星期日)。

DATEFIRST 值的 Microsoft 文档

如果 SQL Server 配置了非英语或非美国语言,默认值会DATEFIRST是 7 以外的值吗?如果是,如何检查不同语言的默认值?

sql-server
  • 1 个回答
  • 67 Views
Martin Hope
Eitan
Asked: 2025-04-20 20:21:33 +0800 CST

在 SQL Server 中的单独会话中调用存储过程

  • 5

我尝试在另一个会话中调用 SQL Server 存储过程。

这是我的代码:

CREATE PROCEDURE [dbo].[CI_AdHoc_PrepareJob]
(
    @JobName NVARCHAR(50),
    @StepName NVARCHAR(50),
    @Value NVARCHAR(MAX)
)
AS
BEGIN
    BEGIN TRAN;

    DECLARE @MyStepName SYSNAME = @StepName + '_' + CAST(NEWID() AS NVARCHAR(36));
    DECLARE @MyCmd NVARCHAR(MAX) = 'EXEC CI_AdHoc_SP @id=1, @value=''' + @Value + '''';

    -- Call helper to create the job step immediately
  EXEC dbo.sp_add_jobstep
    @jobname = @JobName,
    @stepname = @myStepName,
    @subsystem = N'TSQL',
    @command = @MyCmd,
    @on_success_action = 1, -- Quit with success
    @on_fail_action = 2, -- Quit with failure
    @DatabaseName = 'MyDB';


    -- Now start the job
    EXEC msdb.dbo.sp_start_job 
        @job_name = @JobName,
        @step_name = @MyStepName;

    -- Get Job ID (optional)
    DECLARE @JobId UNIQUEIDENTIFIER;
    SELECT @JobId = job_id FROM msdb.dbo.sysjobs WHERE name = @JobName;

    ROLLBACK TRAN;
END

我希望即使我在最后进行回滚,存储过程也能运行(不受回滚干扰。它用于数据库中的某些更新)。

我怎样才能做到这一点?

是否使用参数运行作业-一个很好的解决方案。

(存储过程没有参数可能也没问题,但是我需要传递参数,所以需要sp_add_jobstep在事务内部调用。除此之外,我没有找到其他方法)。

sql-server
  • 1 个回答
  • 73 Views
Martin Hope
Cyclone
Asked: 2025-04-09 04:53:22 +0800 CST

使用 SQL Server,从数据库中存储的 IP 地址和子网掩码获取子网

  • 5

我们使用子网对计算机资产进行地理定位。在最新数据中,我们没有子网(例如 10.81.66.0),只有 IP 地址和子网掩码,例如 255.255.255.0。

有没有办法用 SQL 把一列 IP 地址(比如 10.81.66.99)和子网掩码 255.255.255.0 转换成子网掩码,比如上面的 10.81.66.0。我知道用 24 位掩码会容易得多,但我需要这种方法适用于任何子网掩码。

我不确定您是否想将VARCHARIP 地址转换为 1 和 0 的二进制映射,以便对 IP 地址和子网掩码进行按位比较,保留相同的 1,然后再以某种方式将它们转换回来?任何帮助都将不胜感激,因为每次我花时间解决这个问题时,我都会头疼。

SQL 版本:Microsoft SQL Server 2019(KB5021124)-15.0.4280.7(X64)2023 年 1 月 23 日 12:37:13

基本查询:

从 IP 源中选择计算机名、IP、子网掩码

示例输出:

计算机99,10.81.66.99,255.255.255.0

所需输出示例:

计算机99,10.81.66.99,255.255.255.0,10.81.66.0

sql-server
  • 1 个回答
  • 31 Views
Martin Hope
Jack Morris
Asked: 2025-04-08 23:49:58 +0800 CST

用连字符连接第一个和最后一个连续的行号

  • 5

我们的表存储了订单的行号。是否可以将它们连接成一个字符串,其中第一行和最后一行连续的行用连字符分隔,非连续的行用逗号分隔?有些订单包含同一商品的 100 多行,我们不想逐行列出,而是希望将它们压缩为“行:1-100”,或“行:1-20、25、30-50、75-100”等等……

来源

线 物品
1 苹果
2 苹果
3 苹果
4 橙子
5 苹果
6 橙子
7 苹果
8 苹果
9 橙子
10 橙子

当前查询

使用 STRING_AGG 后,我按行对它们进行了分组,但我不知道如何识别连续的部分并提取连字符的首/尾值。LAG 和 LEAD 可以与 STRING_AGG 一起使用吗?

SELECT
    CONCAT('Lines: ', STRING_AGG(Line, ', ') WITHIN GROUP (ORDER BY Line)) AS [Line],
    Item
FROM Table
GROUP BY Item

当前结果

线 物品
线路:1、2、3、5、7、8 苹果
线路:4、6、9、10 橙子

期望结果

线 物品
线路:1-3、5、7-8 苹果
线路:4、6、9-10 橙子
sql-server
  • 1 个回答
  • 52 Views
Martin Hope
SK-USA
Asked: 2025-04-05 04:41:57 +0800 CST

SQL Server RegEx [重复]

  • 4
此问题这里已有答案:
在 SQL Server 中使用 RegEx (10 个答案)
昨天休息。

我需要匹配至少包含 6 位数字的字符串。我遇到了这个问题。

此示例将有助于:

IF OBJECT_iD('tempdb..#Sample') IS NOT NULL DROP TABLE #Sample
CREATE TABLE #Sample(Field VARCHAR(50))
GO

INSERT INTO #Sample (Field) VALUES ('ABC123 ')
INSERT INTO #Sample (Field) VALUES ('ABC1')
INSERT INTO #Sample (Field) VALUES ('ABC1')
INSERT INTO #Sample (Field) VALUES ('ABC123.')
INSERT INTO #Sample (Field) VALUES ('ABC123&')
INSERT INTO #Sample (Field) VALUES ('ABC123&')
INSERT INTO #Sample (Field) VALUES ('ABC1234567&')
INSERT INTO #Sample (Field) VALUES ('ABC12345&')
INSERT INTO #Sample (Field) VALUES ('DataMigrationLog_Bak3')

DECLARE @PAT VARCHAR(500) 

SELECT '%[^a-z0-9 .]%' PAT, * FROM #Sample WHERE Field LIKE '%[^a-z0-9 .]%'

SELECT @PAT = '%[(\d{6})]%'
SELECT @PAT PATVAR, * FROM #Sample WHERE Field LIKE @PAT

SELECT '%[(\d{3})]%' PAT, * FROM #Sample WHERE Field LIKE '%[(\d{3})]%'

当使用这种模式时 -%[(\d{6})]%它给出两行

ABC1234567&
DataMigrationLog_Bak3

我在这里遗漏了什么?

sql-server
  • 1 个回答
  • 61 Views
Martin Hope
Manngo
Asked: 2025-04-04 18:39:06 +0800 CST

SQL Server 登录名和用户

  • 5

我想创建一个数据库和用户的集合,以便每个用户只能访问一个数据库。

SO 问题“SQL Server 中用户和登录名之间的区别”讨论了登录名和用户。

我从中了解到,通常登录名用于服务器,而用户用于数据库。但是,我不明白这是如何工作的,因为密码是为登录名设置的,而不是为用户设置的。

这是否意味着我需要为每个数据库使用不同的登录名,或者是否有办法通过单个登录名与多个用户一起使用,每个用户都有自己的密码?

我想在 SQL 中执行此操作,而不是在 GUI 界面中,因为我需要编写脚本。

sql-server
  • 2 个回答
  • 59 Views
Martin Hope
Ganesh Mohane
Asked: 2025-04-04 02:38:53 +0800 CST

我的 IDENTITY 主键会在大型位置跟踪表中用完吗?

  • 5

我正在使用 SQL Server 开发一个位置跟踪系统,每隔几秒钟我就会存储员工的位置更新。这是我的表格:

CREATE TABLE tblAppLocation 
(
    id INT PRIMARY KEY IDENTITY(1,1),
    inEmpId INT FOREIGN KEY REFERENCES tblMstEmployee(inEmpId),
    latitude FLOAT NOT NULL,
    longitude FLOAT NOT NULL,
    timestamp DATETIME NOT NULL DEFAULT GETDATE()
);

我们跟踪 300 多名员工,每天插入数据 12 小时。随着时间的推移,表格大小将显著增长。

我的顾虑:

  • 值会id INT IDENTITY(1,1)用完吗?我应该切换到吗BIGINT?

  • 频繁插入是否存在性能风险?索引或分区是否有帮助?

  • 在 SQL Server 中管理大型位置跟踪数据的最佳实践是什么?

任何有关数据库优化和长期存储解决方案的见解都将不胜感激。

sql-server
  • 1 个回答
  • 22 Views
Martin Hope
Cerbero
Asked: 2025-04-02 21:35:40 +0800 CST

使用 Microsoft Fabric 中的 sp_rename 重命名 SQL Server 中的列时出错

  • 5

尝试使用以下查询重命名 SQL Server 中的列时遇到错误:

EXEC sp_rename 'Gold.dbo.TEST_TABLE.OldTestColumn', 'NewTestColumn', 'COLUMN';

我收到以下错误消息:

消息 15600,级别 16,状态 30,第 897 行
为过程“sys.sp_rename”指定了无效参数或选项。

消息 24528,级别 0,状态 1,第 1
行语句 ID:{9626E836-C810-48E3-A9A7-D2BBD641B028}
下午 3:31:04 SQL Server 执行时间:00:00:00.112 | 总持续时间:00:00:01.191

列、表和架构均存在,并且所有内容均已正确引用。我尝试了不同的变体,但问题仍然存在。我的环境是 Microsoft Fabric,位于 Warehouse Gold 内。

关于如何解决这个问题有什么建议吗?

我尝试使用存储过程重命名 Microsoft Fabric 中表中的列sp_rename。我期望列名能够成功更新且不会出现错误。

sql-server
  • 1 个回答
  • 48 Views
Martin Hope
Flea
Asked: 2025-03-09 03:34:28 +0800 CST

从 Dockerfile 创建 SQL Server 实例时,它似乎没有获取 SA 密码

  • 5

我之前创建了一个 SQL Server docker 容器实例,并且能够成功登录。我删除了该映像,并将代码从 docker run 命令迁移到具有支持 Dockerfile 的 docker-compose 中。

我在 dockerfile 中设置了 ENV MSSQL_SA_PASSWORD,但是现在,当我尝试登录时,它给出了一个错误:用户“sa”登录失败。似乎它将其缓存在某处,而我不再记得那个密码是什么了。

我该如何解决这个问题并让容器仅使用 Dockerfile 中设置的密码?

FROM mcr.microsoft.com/mssql/server:2022-latest

COPY source/database/scripts /usr/src/app

ENV MSSQL_SA_PASSWORD "MyPassword1"
ENV ACCEPT_EULA Y

# Run SQL Server process
ENTRYPOINT [ "/opt/mssql/bin/sqlservr" ]

谢谢

sql-server
  • 2 个回答
  • 26 Views
Martin Hope
MikeC
Asked: 2025-03-07 16:47:30 +0800 CST

将 XML 元素中的本地时间转换为 UTC

  • 5

我需要将 xml 列中的时间戳元素转换为 SQL Server 2019 中的 UTC 时间。

CREATE TABLE TestTable
   (    
       Id INT IDENTITY(1,1) NOT NULL,
       Data XML NOT NULL
   );

INSERT TestTable (Data) VALUES ('<root>
        <id>1</id>
        <timestamp>2024-08-20T10:55:37+10:00</timestamp>
    </root>');

我想将时间戳更改为“2024-08-20T00:55:37Z”。我正在使用“Data.modify('replace value of'”,但找不到新值基于旧值而不是简单字符串替换的示例。

sql-server
  • 2 个回答
  • 48 Views

Sidebar

Stats

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

    重新格式化数字,在固定位置插入分隔符

    • 6 个回答
  • Marko Smith

    为什么 C++20 概念会导致循环约束错误,而老式的 SFINAE 不会?

    • 2 个回答
  • Marko Smith

    VScode 自动卸载扩展的问题(Material 主题)

    • 2 个回答
  • Marko Smith

    Vue 3:创建时出错“预期标识符但发现‘导入’”[重复]

    • 1 个回答
  • Marko Smith

    具有指定基础类型但没有枚举器的“枚举类”的用途是什么?

    • 1 个回答
  • Marko Smith

    如何修复未手动导入的模块的 MODULE_NOT_FOUND 错误?

    • 6 个回答
  • Marko Smith

    `(表达式,左值) = 右值` 在 C 或 C++ 中是有效的赋值吗?为什么有些编译器会接受/拒绝它?

    • 3 个回答
  • Marko Smith

    在 C++ 中,一个不执行任何操作的空程序需要 204KB 的堆,但在 C 中则不需要

    • 1 个回答
  • Marko Smith

    PowerBI 目前与 BigQuery 不兼容:Simba 驱动程序与 Windows 更新有关

    • 2 个回答
  • Marko Smith

    AdMob:MobileAds.initialize() - 对于某些设备,“java.lang.Integer 无法转换为 java.lang.String”

    • 1 个回答
  • Martin Hope
    Fantastic Mr Fox msvc std::vector 实现中仅不接受可复制类型 2025-04-23 06:40:49 +0800 CST
  • Martin Hope
    Howard Hinnant 使用 chrono 查找下一个工作日 2025-04-21 08:30:25 +0800 CST
  • Martin Hope
    Fedor 构造函数的成员初始化程序可以包含另一个成员的初始化吗? 2025-04-15 01:01:44 +0800 CST
  • Martin Hope
    Petr Filipský 为什么 C++20 概念会导致循环约束错误,而老式的 SFINAE 不会? 2025-03-23 21:39:40 +0800 CST
  • Martin Hope
    Catskul C++20 是否进行了更改,允许从已知绑定数组“type(&)[N]”转换为未知绑定数组“type(&)[]”? 2025-03-04 06:57:53 +0800 CST
  • Martin Hope
    Stefan Pochmann 为什么 {2,3,10} 和 {x,3,10} (x=2) 的顺序不同? 2025-01-13 23:24:07 +0800 CST
  • Martin Hope
    Chad Feller 在 5.2 版中,bash 条件语句中的 [[ .. ]] 中的分号现在是可选的吗? 2024-10-21 05:50:33 +0800 CST
  • Martin Hope
    Wrench 为什么双破折号 (--) 会导致此 MariaDB 子句评估为 true? 2024-05-05 13:37:20 +0800 CST
  • Martin Hope
    Waket Zheng 为什么 `dict(id=1, **{'id': 2})` 有时会引发 `KeyError: 'id'` 而不是 TypeError? 2024-05-04 14:19:19 +0800 CST
  • Martin Hope
    user924 AdMob:MobileAds.initialize() - 对于某些设备,“java.lang.Integer 无法转换为 java.lang.String” 2024-03-20 03:12:31 +0800 CST

热门标签

python javascript c++ c# java typescript sql reactjs html

Explore

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

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve