小编Lea*_*min的帖子

如何在 Oracle 中创建聚集索引和非聚集索引?

我就我的问题挖了几个小时,但没有得到满意的答案。我还是有疑问。我发现了以下关于聚集索引的信息:

  1. 数据按照聚集索引的顺序存储。
  2. 每个表只有一个聚集索引。
  3. 创建主键时,也会自动创建聚集索引。

我得到了这些点,但我的问题是:

  1. Oracle 数据库中是否存在聚集索引?因为我在一些博客中读到“Oracle 没有聚集索引的概念”。
  2. 如果是,请告诉我创建聚集索引sql 语句
  3. 如上所述,当在表的列上定义主键时,会自动创建聚集索引,如果创建与否如何检查索引类型?

请找到我的表架构:

在此处输入图片说明

让我知道是否需要其他任何内容才能获得这些问题的答案。

oracle clustered-index

13
推荐指数
2
解决办法
5万
查看次数

暂时将 SQL Server 2016 数据库移至 SQL Server 2017,然后移回。是否可以?

如果我从 SQL Server 2016 实例备份数据库,然后将其还原到 2017 实例以对其进行一些工作。

然后我可以从 2017 年实例中转身并备份该数据库,并使用它来覆盖 2016 年实例上的原始版本吗?

sql-server backup restore sql-server-2016 sql-server-2017

13
推荐指数
1
解决办法
1916
查看次数

如何修复 MS SQL Server 上混乱的复制

我从备份中恢复了一个数据库。数据库使用复制发布到不同的服务器。假设数据库还原会破坏复制,我尝试删除复制并重新创建它(我们有一个脚本可以从头开始重新创建它)。我不确定我到底做了什么,但现在它处于完全混乱的状态,我无法修复它。

首先,我尝试取消订阅(在发布服务器上):

EXEC sp_dropsubscription @publication = 'PublicationName', @article = N'all', @subscriber = 'SubscriberServerName'
Run Code Online (Sandbox Code Playgroud)

这似乎有效。SELECT * FROM syssubscriptions显示没有结果。查看订阅服务器,SSMS > {SubscriberServer} > Replication > Local Subscriptions - 订阅不在那里。

然后我尝试删除该出版物。SSMS > {Server} > 复制 > 本地发布 > {PublicationName} > 删除。这给出了以下错误消息:

Could not delete publication 'PublicationName'.
Could not drop article. A subscription exists on it.
Changed database context to 'DatabaseName'. (Microsoft SQL Server, Error: 14046)
Run Code Online (Sandbox Code Playgroud)

好的,所以我尝试删除这些文章:

EXEC sp_droparticle @publication = 'PublicationName', @article = N'all'
Run Code Online (Sandbox Code Playgroud)

并收到此错误:

Invalidated the existing snapshot of the publication. …
Run Code Online (Sandbox Code Playgroud)

replication sql-server sql-server-2012 troubleshooting transactional-replication

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

锁定 SQL Server 和 Oracle

我一直在对 MSSQL Server 和 Oracle 中的锁定/阻塞进行一些测试,我注意到一个区别:

在 Oracle 中 - 我在不发出提交或回滚的情况下对一行执行更新,在另一个会话中我可以查看底层记录,当然,我可以查看最后提交的数据,而不是尚未提交的值。

在 MSSQL Server 中 - 当我在另一个会话中执行相同的操作时,SQL Server 一直在等待正在更新的行的提交或回滚。

有人可以解释一下 MSSQL 服务器和 Oracle 之间的锁定机制。

oracle sql-server locking

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

如何透视 SQL Server 中的多个列?

将表格“展平”成单行的最佳方法是什么?

例如,使用下表:

+-----+-------+-------------+------------------+
| Id  | hProp | iDayOfMonth | dblTargetPercent |
+-----+-------+-------------+------------------+
| 117 |    10 |           5 |           0.1400 |
| 118 |    10 |          10 |           0.0500 |
| 119 |    10 |          15 |           0.0100 |
| 120 |    10 |          20 |           0.0100 |
+-----+-------+-------------+------------------+
Run Code Online (Sandbox Code Playgroud)

我想生成下表:

+-------+--------------+-------------------+--------------+-------------------+--------------+-------------------+--------------+-------------------+
| hProp | iDateTarget1 | dblPercentTarget1 | iDateTarget2 | dblPercentTarget2 | iDateTarget3 | dblPercentTarget3 | iDateTarget4 | dblPercentTarget4 |
+-------+--------------+-------------------+--------------+-------------------+--------------+-------------------+--------------+-------------------+
|    10 |            5 |              0.14 |           10 …
Run Code Online (Sandbox Code Playgroud)

sql-server pivot t-sql

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

SQL Server 2014 的 MAXDOP 设置

我知道这个问题已经被问过很多次了,也有答案,但是,我仍然需要更多关于这个主题的指导。

以下是来自 SSMS 的我的 CPU 的详细信息:

中央处理器

下面是数据库服务器任务管理器中的 CPU 选项卡:

CPU选项卡

MAXDOP通过以下公式将 的设置保持在 2:

declare @hyperthreadingRatio bit
declare @logicalCPUs int
declare @HTEnabled int
declare @physicalCPU int
declare @SOCKET int
declare @logicalCPUPerNuma int
declare @NoOfNUMA int
declare @MaxDOP int

select @logicalCPUs = cpu_count -- [Logical CPU Count]
    ,@hyperthreadingRatio = hyperthread_ratio --  [Hyperthread Ratio]
    ,@physicalCPU = cpu_count / hyperthread_ratio -- [Physical CPU Count]
    ,@HTEnabled = case 
        when cpu_count > hyperthread_ratio
            then 1
        else 0
        end -- HTEnabled
from sys.dm_os_sys_info
option (recompile);

select …
Run Code Online (Sandbox Code Playgroud)

sql-server configuration maxdop sql-server-2014

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

在 ascii 中表达基数的最常见方式

我知道有几个符号可以表达实体之间的基数。

但是在 ascii 中是否有一种实用的通用方法来表达基数?

示例:用户——组。一个用户可以有多个组,一个组可以有多个用户。

我看了这个页面:https : //en.wikipedia.org/wiki/Cardinality_(data_modeling)

例如:一对多的“订单” ?? “行项目”

以下是表示基数的一些图形方式:

https://en.wikipedia.org/wiki/Entity%E2%80%93relationship_model#Cardinalities

表示基数的最常见方式是什么?

这个有标准/rfc吗?

terminology

5
推荐指数
1
解决办法
493
查看次数

为什么我不能创建一个所有者设置为 dbo 的新架构?

我创建了一个测试帐户来检查权限。它当前具有 Northwind 数据库的 db_datareader、db_datawriter 和 db_ddladmin 角色。但是当它尝试在 Northwind 上创建新模式时,如果它尝试将 dbo 授权为模式所有者,则创建失败,这是怎么回事?

创建架构失败

Version: 
SQL Server Management Studio: 15.0.18183.0 
Microsoft Analysis Services Client Tools: 15.0.1487.0 
Microsoft Data Access Components (MDAC): 10.0.18362.1 
Microsoft MSXML: 3.0 6.0 
Microsoft Internet Explorer: 9.11.18362.0 Microsoft 
.NET Framework: 4.0.30319.42000 
Operating System: 10.0.18362
Run Code Online (Sandbox Code Playgroud)

schema sql-server permissions users sql-server-2016

5
推荐指数
1
解决办法
2061
查看次数

死锁图和解释,避免的解决方案

我支持基于供应商的应用程序,它充满了块和死锁。死锁主要涉及两个或三个进程,但是我昨天注意到,它涉及 9 个 SPID。

有人可以帮助我理解这个死锁图和如何避免这种情况的解决方案。

<deadlock><victim-list><victimProcess id="process2ff017c28"/><victimProcess id="process2f1538108"/><victimProcess id="process2f618d088"/><victimProcess id="process2f6d828c8"/><victimProcess id="process2f6d83848"/><victimProcess id="process2da9b5468"/><victimProcess id="process2efac7468"/><victimProcess id="process2efac7848"/></victim-list><process-list><process id="process2ff017c28" taskpriority="0" logused="0" waitresource="OBJECT: 11:1142295129:0 " waittime="4412" ownerId="284194209" transactionname="implicit_transaction" lasttranstarted="2019-04-08T15:29:07.323" XDES="0x2a785f800" lockMode="IX" schedulerid="1" kpid="9052" status="suspended" spid="63" sbid="0" ecid="0" priority="0" trancount="2" lastbatchstarted="2019-04-08T15:30:58.733" lastbatchcompleted="2019-04-08T15:30:58.733" lastattention="1900-01-01T00:00:00.733" clientapp="jTDS" hostname="APPNAME" hostpid="123" loginname="IRB_APP_USER" isolationlevel="repeatable read (3)" xactid="284194209" currentdb="11" currentdbname="Database_Name" lockTimeout="4294967295" clientoption1="671088672" clientoption2="128058"><executionStack><frame procname="adhoc" line="1" stmtstart="46" stmtend="180" sqlhandle="0x02000000b6b6e728e6bf289c908196a1f4e56b8892a5eab10000000000000000000000000000000000000000">
unknown    </frame></executionStack><inputbuf>
(@P0 bigint,@P1 bigint)update Table_Name set STATUS_ID= @P0  where id= @P1    </inputbuf></process><process id="process2f1538108" taskpriority="0" logused="0" waitresource="OBJECT: 11:1142295129:0 " waittime="4411" ownerId="284107628" transactionname="implicit_transaction" lasttranstarted="2019-04-08T15:24:11.843" XDES="0xdacf54e0" lockMode="IX" …
Run Code Online (Sandbox Code Playgroud)

sql-server deadlock

4
推荐指数
3
解决办法
2036
查看次数

SQL Server 在使用不同实例的端口号时忽略实例名称

我最近看到一个奇怪的案例,但仍然不知道它背后的原因是什么。在我的一台开发服务器上,有两个 SQL 服务器实例正在运行——一个是默认的,另一个是 UAT 实例。

最近,我们对这两个实例的默认端口进行了更改,并将相同的内容传达给开发团队和其他利益相关者,以开始他们的更改并对其进行测试。为了不影响他们现有的应用程序,端口 1433 保持在默认实例上。因此,以下是要连接的服务器和端口的详细信息:

默认连接 --> Server_Name,35683

Named(SIT) 实例的连接 --> Server_Name\SIT,35685

默认实例 TCP/IP 属性

命名实例 TCP/IP 属性

两个实例都具有相似的数据库,但是由于它们指向不同的环境,因此数据集不同。

一位高级开发人员使用连接作为 Server_name\SIT,35683 意味着实例和端口不匹配。他正在使用 SIT 实例但是默认实例的端口,它将他连接到默认实例。

当我在他的办公桌前并且我们正在测试一些代码时发现了这一点,我注意到了这一点,因为我的更改没有反映在默认实例中,因为我在 SIT 实例中进行了更改。

有人可以解释这种行为以及如何解决这个问题吗?

sql-server instance tcpip

4
推荐指数
1
解决办法
191
查看次数