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

问题[sql-server-2016](dba)

Martin Hope
Darrell
Asked: 2024-08-19 23:39:56 +0800 CST

尝试附加数据库时出现操作系统错误 5:“5(拒绝访问。)”

  • 5

尝试使用以下命令附加数据库(SQL 2016):

CREATE DATABASE [MYDB]
ON (FILENAME = 'E:\DBA\Data\MYDB_Data.mdf')
FOR ATTACH;

出现以下错误:

Msg 5120, Level 16, State 101, Line 4
Unable to open the physical file "E:\DBA\Data\MYDB_Data.mdf". Operating system error 5: "5(Access is denied.)".
Msg 1802, Level 16, State 7, Line 4
CREATE DATABASE failed. Some file names listed could not be created. Check related errors.

其他人认为权限可能是问题所在。但我的情况并非如此:

PS E:\DBA\Data> icacls .
. NT SERVICE\MSSQLSERVER:(F)
  BUILTIN\Administrators:(F)
  CREATOR OWNER:(OI)(CI)(IO)(F)
  NT AUTHORITY\SYSTEM:(OI)(CI)(F)
  BUILTIN\Administrators:(OI)(CI)(F)
  NT SERVICE\MSSQLSERVER:(OI)(CI)(F)

Successfully processed 1 files; Failed processing 0 files

PS E:\DBA\Data> icacls .\MYDB_Data.mdf
.\MYDB_Data.mdf BUILTIN\Administrators:(F)
                NT AUTHORITY\SYSTEM:(F)
                NT SERVICE\MSSQLSERVER:(F)

Successfully processed 1 files; Failed processing 0 files

服务帐户是本地管理员组中的域帐户。我还有希望吗?

sql-server-2016
  • 2 个回答
  • 55 Views
Martin Hope
Jonathan Beck
Asked: 2024-04-04 23:42:52 +0800 CST

尝试对一个字段重新编号以便按另一个字段分组

  • 5

所以我有一个表,其中有一列标记为“序列”,它实际上不是序列数据类型,只是一个在对象模型中转换以按特定顺序显示项目的数字字段。在少数情况下,由于数据库操作,某些记录将具有重复的序列,导致无法在 UI 中重新排序。在其他情况下,测序中存在间隙(不是严重问题)。我想做的是从 1 开始重新编号这些数字字段,但它必须按“co”字段分组,然后按您在下面看到的现有序列字段分组:

这是我运行的查询以获得您看到的结果:

SELECT row_number() OVER (ORDER BY C.co, T.sequence) AS RowNum, C.co, T.sequence
FROM TNode T
INNER JOIN CInfo C ON C.guidfield = T.contextID
    WHERE T.nodeTypeID = '0EC43D28-EA1F-4FBE-BA50-06161AFAB382'
    AND T.parentNodeID ='A276DF06-4569-11D5-8052-00D0B7696EF9'
GROUP BY C.co, T.sequence

在此输入图像描述

我想要实现的目标就是这个。请注意记录上的序列如何稍微重新编号,其中它不是直接的 1、2、3...,但每次遇到新的“co”时都必须再次从 1 开始,然后还按现有序列进行排序那里 :

在此输入图像描述

sql-server-2016
  • 2 个回答
  • 38 Views
Martin Hope
Chris Marriott
Asked: 2023-11-20 19:52:53 +0800 CST

为什么 CURSOR 循环之外的 SAVE TRAN 不起作用,而内部却可以?

  • 6

为什么,当我SAVE TRAN SavePoint位于位置 (A) 时,我在第三次陷入 CATCH 及其他情况时会收到这些错误...

“消息 6401,级别 16,状态 1 ...无法回滚 SavePoint。未找到该名称的事务或保存点。”

SAVE TRAN SavePoint;...但是当位于位置 (B)时我没有收到此类错误?

我只能想象这与光标循环的上下文有关,但我不明白为什么。

-- Premable stuff, opening cursor, etc. here...

BEGIN TRAN

SAVE TRAN SavePoint;  -- (A)

WHILE @@FETCH_STATUS = 0
BEGIN;

  -- SAVE TRAN SavePoint;  -- (B)

  BEGIN TRY

    -- UPDATE statement here which may fail

    SAVE TRAN SavePoint;

  END TRY
  BEGIN CATCH

    ROLLBACK TRAN SavePoint;

  END CATCH;

  FETCH NEXT FROM Cursor INTO @X, @Y, @Z;

END;

-- CLOSE & DEALLOCATE stuff here

IF @DryRun = 1
  ROLLBACK TRAN;
ELSE
  COMMIT TRAN;
sql-server-2016
  • 1 个回答
  • 45 Views
Martin Hope
James
Asked: 2023-10-04 07:11:30 +0800 CST

在 SQL Server 上执行 SQL 脚本时 DBeaver 无法识别声明的变量

  • 6

我们使用 DBeaver Community Edition (v23.2.0.202309041200) 作为连接 Microsoft SQL Server 2016 (v13.0.5101.9) 的客户端。

当在 DBeaver 中作为脚本执行以下 SQL 语句时,会出现此问题。

declare @option as int = 2;

select @option;

“执行 SQL 脚本”操作或通过 DBeaver 热键Alt+X在选择语句上总是失败,并显示错误消息SQL Error [137] [S0002]: Must declare the scalar variable "@option".。

如果我们突出显示这两个 SQL 语句并执行“执行 SQL 查询”操作,或者使用 DBeaver 热键,则不会发生该错误Ctrl+Enter。

如果我们使用 Microsoft SQL Server Management Studio,也不会发生该错误,因此我们不认为该问题与 SQL Server 有关。

我们的问题:

在 MSSQL (Microsoft SQL Server) 上执行 SQL 脚本时,有什么方法可以使用 DBeaver 中声明的变量吗?

我们非常感谢任何提示和建议。

sql-server-2016
  • 1 个回答
  • 23 Views
Martin Hope
QueryQuirk
Asked: 2023-10-02 21:57:49 +0800 CST

比较两个表的差异

  • 5

我正在尝试比较两个单独数据库(同一实例)中的两个表以获取新的数据提取这些表大约有 400 万行,并且由于它们的提取方式在每个表中的顺序不同,因为它们只是暂存表(没有 PK)。

我尝试过使用 (select * from table 1 except select * from table 2) UNION ALL (select * from table 2 except select * from table 1) 但是这会导致大约 1000 万行,因此无法按预期工作。

我猜结果应该是几千左右。

sql-server-2016
  • 2 个回答
  • 38 Views
Martin Hope
Artashes Khachatryan
Asked: 2023-08-24 21:02:51 +0800 CST

SQL 编译\秒

  • 8

我尝试加载测试一个简单的插入存储过程

CREATE TABLE _test(ID BIGINT)

CREATE OR alter PROCEDURE dbo.test_sp
AS
BEGIN
    SET NOCOUNT ON;
    BEGIN
        INSERT INTO _test
        SELECT CAST(RAND() * 10000 AS BIGINT)
    END
END

当我使用 SQLStress 工具运行此 sp 时,我得到的结果不SQL Compilation\sec等于Batch Request\sec.

有趣的事实是SQL Re-Compilations\sec0。性能计数器

optimized for ad-hoc和均已Forced parametrization启用。即使我将 sp 更改为简单的SELECT 1. 任何帮助将不胜感激。我使用 Microsoft SQL Server 2016 (SP3) (KB5003279)。

sql-server-2016
  • 1 个回答
  • 97 Views
Martin Hope
CaseyR
Asked: 2023-05-12 22:05:59 +0800 CST

矫枉过正或规范化的良好应用来创建父表只是为了关联子集合

  • 5

我有一种情况,我需要将一组详细信息行放在一起,但“父”没有其他属性,“子”没有自己的目的。我从典型的(对我来说)方法开始

GroupOfSomething
    Id

SomethingDetail
    Id
    GroupOfSomethingId (FK)
    LookupToAnotherTable (FK)
    SomethingElse

在上面,Id 是说 INT 的 PK。想知道像下面这样只有一个表而不是父/子关系的东西是否更合适(GroupId 可能是一个 UNIQUEIDENTIFIER)

GroupOfSomethings
    GroupId
    Id
    LookupToAnotherTable (FK)
    SomethingElse

为了澄清,这是针对会计系统之类的东西。这些Somethings是帐户的 FK。将收集这些帐户,然后用户将这些帐户链接到一个或多个供应商。在链接供应商和帐户集合的级别上,还有其他元数据。然后该关系将成为另一个 1:many 集合以及其他 1:1 和 1:many 相关实体的父级。所以它最终看起来像下面这样(使用原始的 PK/FK 结构,没有定义所有其他 FK 表是什么)

GroupOfAccounts
    Id (PK)

GroupOfAccountDetail
    Id (PK)
    GroupOfAccountId (FK)
    AccountId (FK)

VendorGroupOfAccountInfo
    Id (PK)
    VendorId (FK)
    GroupOfAccountId (FK)

VendorGroupOfAccountInfoAdditionalDetail
    Id (PK)
    VendorGroupOfAccountInfoId (FK)
    FeeStructureId (FK)
    StateId (FK)


VendorGroupOfAccountRates
    Id (PK)
    GroupOfAccountDetail (FK)
    RatePercentage
    EffectiveDate

...
sql-server-2016
  • 1 个回答
  • 26 Views
Martin Hope
youcantryreachingme
Asked: 2023-05-08 07:14:29 +0800 CST

为什么连续的 .bak 全量备份文件会变大?

  • 5

首先,这不是这个问题的重复。在那个问题中,这个人每次都在覆盖文件,解决方案是使用 INIT 或 NOINIT。

在我的例子中,我们为每个备份生成一个唯一的文件名——一个时间戳附加到文件名。

我们有一个代理作业,每晚为大约 20 个数据库运行完整备份。在大约一周的时间里,1 个数据库的大小似乎每晚都在显着增加。

我们运行第二个代理作业,每 15 分钟运行一次日志备份,但在晚上 11 点到凌晨 5 点之间停止运行。通常早上的第一件事是日志备份很大,然后它们的大小变小,直到人们开始工作,然后它们的大小各不相同。

所有这些多年来一直没有问题。

20 个数据库中只有一个显示此问题 - 每晚的完整备份都比前一晚大得多。

日志文件备份适用于该数据库和所有其他数据库。

我们有一个包含三个副本的可用性组。两个被设置为相互故障转移,第三个副本是只读的,用于繁重的查询、数据提取和报告。AG 控制台在所有服务器的页面下方一直显示绿色复选标记。

有问题的数据库是 20 个数据库中最大的一个。正常的完整备份大约是 25GB。它慢慢增加如下:33、35、36、41、47、54、64、73 GB。

相比之下,在此问题之前的所有 14 个备份中,文件大小相当稳定,约为 25GB。

我刚刚暂停了所有数据库的所有日志备份,并对受影响的数据库进行了完整备份,最后一次完整备份是 76GB。

sql-server-2016
  • 1 个回答
  • 37 Views
Martin Hope
kedar
Asked: 2023-04-24 18:58:10 +0800 CST

Ola Hallengren 的维护解决方案脚本不会将事务日志文件转储到目标

  • 6

在我们的一个客户站点,我实施了高可用性 (HA) 解决方案。但是在备份的过程中,遇到了一个备份环境配置的问题。我们使用 Ola Hallengren 的 Maintenance Solution 脚本配置了备份环境。环境包括不同的 Windows Server 主机名和@@serverproperty,这导致备份过程因此错误而停止

(Message 50000)  Source: https://sqlhelps.com [SQLSTATE 01000] (Message 50000)       [SQLSTATE 01000] (Message 50000)  The @@SERVERNAME does not match SERVERPROPERTY('ServerName'). See https://docs.microsoft.com/en-us/sql/database-engine/install-windows/rename-a-computer-that-hosts-a-stand-alone-instance-of-sql-server. [SQLSTATE 42000] (Error 50000)      [SQLSTATE 01000] (Message 50000)  Date and time: 2023-04-23 12:46:07 [SQLSTATE 01000] (Message 50000)       [SQLSTATE 01000] (Message 50000).  The step failed.

为了解决这个问题,我注释掉了如下所示的 T-SQL 脚本: --// Check @@SERVERNAME //-- --IF 'MainServer' <> CAST(SERVERPROPERTY('ServerName') AS nvarchar(max)) AND SERVERPROPERTY('IsHadrEnabled') = 1 --BEGIN -- INSERT INTO @Errors ([Message], Severity, [State]) -- SELECT 'The @@SERVERNAME does not match SERVERPROPERTY(''ServerName''). See ' + CASE WHEN SERVERPROPERTY('IsClustered') = 0 THEN 'https://docs.microsoft.com/en-us/sql/database-engine/install-windows/rename-a-computer-that-hosts-a-stand-alone-instance-of-sql-server' WHEN SERVERPROPERTY('IsClustered') = 1 THEN 'https://docs.microsoft.com/en-us/sql/sql-server/failover-clusters/install/rename-a-sql-server-failover-cluster-instance' END + '.', 16, 1 --END

注释掉这个脚本后,备份过程恢复正常,全量备份和差异备份都做了。但是,当尝试在主副本上进行事务日志备份时,事务日志没有转储到目的地。

请注意,所有这些备份都是在主副本上执行的,备份首选项为主副本

如果您能就如何解决此问题分享您的想法和想法,我将不胜感激。谢谢。

sql-server-2016
  • 1 个回答
  • 39 Views
Martin Hope
sql-noob
Asked: 2023-04-11 06:15:53 +0800 CST

为什么我的行重复并错误地显示总和?

  • 5

我有这些表:

Payments

vendor   | VendorLocation | VendorName   | CheckDate | Amount | TransactionID | InvoiceID
---------------------------------------------------------------------
777      |                | Sony        | 5/1/2020   | 1.50   | 345           | ABC555
777      |                | Sony        | 5/1/2020   | 1.20   | 444           | ABC555
777      |  103           | Sony Music  | 5/1/2020   | 8.50   | 888           | XYZ888
777      |  105           | Sony VR     | 5/1/2020   | 2.50   | 789           | XYZ999
777      |  105           | Sony VR     | 5/1/2020   | 2.50   | 833           | XYZ111
Vendor Location

vendor   | VendorLocation | LocationType |Address 1   | State | City
---------------------------------------------------------------------
777      |  103           | X            |123 Ave      | CA    | Rivertown
777      |  105           | Z            |666 Ave      | CA    | Northtown
777      |  106           | Z            |888 Ave      | CA    | Southtown
Vendor Address

vendor   | VendorLocation | Address 1  | State | City
---------------------------------------------------------------------
777      |                | 1 Main St  | CA    | Rivertown
777      |  103           | 123 Ave    | CA    | Rivertown
777      |  105           | 666 Ave    | CA    | Northtown

我想要的输出是:

Vendor Spending

vendor   | VendorLocation | LocationType  | VendorName | TotalTransactions|TotalSpend| Address 1
---------------------------------------------------------------------
777      |                | Z             | Sony       |  2                | $2.70   | 1 Main St
777      |  105           | Z             | Sony VR    |  2                | $5.00   | 666 Ave

但是,我得到的结果低于重复且不正确的 totalSpend 金额:

Vendor Spending

vendor   | VendorLocation | LocationType  | VendorName | TotalTransactions|TotalSpend| Address 1
---------------------------------------------------------------------
777      |                | Z             | Sony       |  2                | $2.70   | 1 Main St
777      |  105           | Z             | Sony VR    |  2                | $7.70   | 1 Main St


This is query I have:

select distinct
ap.vendor Vendor_ID
,vl.VendorLocation
,vl.LocationType
,ap.VendorName
,count(ap.transactionID) as TotalTransactions
,sum( ap.amount) as TotalSpend
,ad.Address1
from payments ap
join  VendorLocation vl
on ( (vl.vendor=ap.vendor and vl.VendorLocation=ap.VendorLocation)
or (vl.vendor=ap.vendor and vl.VendorLocation='')
or (vl.vendor=ap.vendor and ap.VendorLocation='')
and vl.LocationType in ('Z')
) join VENDORADDRESS ad
on (ad.VENDOR=ap.vendor AND ad.VendorLocation=ap.VendorLocation)
where
vl.LocationType in ('Z') and
ap.CheckDate>='4/1/2022'
group by
vl.vendor
,vl.LOCATION_CODE
,vl.LocationType
,ap.VendorName
,ad.Address1
sql-server-2016
  • 1 个回答
  • 24 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