在 Oracle 连接名称的末尾有“.WORLD”有什么意义?我发现没有那个后缀的东西仍然可以连接。我还注意到客户端 tnsnames.ora 文件和服务器 tnsnames.ora 文件都必须具有此后缀(或根本没有)才能进行通信。
如何查找在给定数据库上应用了 FULLTEXT INDEX 的表列表?
例如,您可以像这样启用和禁用 FULLTEXT INDEX:
ALTER FULLTEXT INDEX ON [dbo].[OBJECT_FACT] ENABLE
ALTER FULLTEXT INDEX ON [dbo].[OBJECT_FACT] DISABLE
Run Code Online (Sandbox Code Playgroud) 我使用 SQL Server 2016 进行这些测试。
以下不允许我在模式 S 中为用户 U 创建表
USE [D];
GRANT CONTROL ON SCHEMA :: [S] TO [U];
Run Code Online (Sandbox Code Playgroud)
但这确实:
USE [D]
GRANT ALTER ON SCHEMA :: [S] TO [U];
GRANT CREATE TABLE TO [U];
Run Code Online (Sandbox Code Playgroud)
如果您必须运行这两个附加命令以允许用户在特定模式中创建表,那么 GRANT CONTROL 应该做什么?
这个描述很好,但是我可以运行什么样的用例来确认(成功或失败)GRANT CONTROL 命令在运行该命令之前和之后在物理上影响用户在使用和不使用此模式的数据库上的安全性?
CONTROL 权限:CONTROL 权限可用于轻松地将某个实体的所有权限授予某个主体。它是实体所有权之后的下一个最好的东西,但它不如所有权那么强大。主要区别在于 CONTROL 的被授予者仍然可以被拒绝对实体的一些其他权限。例如,我可以在一个表上被授予 CONTROL,同时我可以在那个表上被拒绝 SELECT,从而阻止我从中选择——这永远不会发生在所有者身上,因为所有者不能被授予或拒绝权限.
我正在 SQL Server 表上执行 ETL 逻辑。我要将数据从一张表同步到另一张表。对于需要基于源表添加到目标表的所有记录,我正在对目标表中的这些行进行插入。架构将其中一列定义为标识列。因此 SQL Server 会自动增加插入的新行的 id。因为我要移动现有的 id,所以我需要删除标识,插入这些行,然后重新应用标识,然后重置种子以使其与源表匹配。这如何以编程方式完成?
我正在寻找一个开源工具来生成 DDL 脚本。许多工具将这些同步脚本称为。我们本质上想比较不同环境的模式(即:DEV 到 QA,QA 到 PROD)以更轻松地管理对象迁移/部署。Oracle 是否存在这样的开源工具?
这两个脚本之间有区别吗?或者,第一个脚本的所有额外标记/属性(即:NONCLUSTERED,WITH...等...)是否都是 SQL Server 2008 中第二个脚本的默认值?
CREATE UNIQUE NONCLUSTERED INDEX [DEID_MAP_IDX1] ON [dbo].[DEID_MAP]
(
[VISIT_NUM] ASC
) WITH
(PAD_INDEX = OFF,
STATISTICS_NORECOMPUTE = OFF,
IGNORE_DUP_KEY = OFF,
ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
Run Code Online (Sandbox Code Playgroud)
CREATE UNIQUE INDEX [DEID_MAP_IDX1] ON [DEID_MAP]
(
[VISIT_NUM] ASC
);
Run Code Online (Sandbox Code Playgroud)
仅供参考:在执行批量数据加载之前,有 ETL 代码使用此脚本删除索引,然后最后使用上面的第二个脚本重新创建索引。
DROP INDEX [deid_map_idx1] ON [deid_map] WITH ( ONLINE = OFF );
Run Code Online (Sandbox Code Playgroud)
编辑:
应用上面的简单索引(第二个脚本)后,我得到了这个:
SQL Server Management Studio > 扩展表 …
下面是我们在一个有几十亿条记录的表上运行的一些 T-SQL 命令。像这样的 5 个表占用了数据库的大部分大小。在不引起任何问题的情况下执行这些步骤的最快方法是什么?仅运行第一个命令就需要一个多小时。删除整个表并重新创建它会更容易吗?或者,对于这么多数据,这是不可能和安全的吗?谁能想到任何其他想法来加快速度?我们只是试图截断数据,然后在我们的 ETL 过程中从头开始重建表。
DROP INDEX [OF_IDX_ClusteredConcept] ON [dbo].[OBS_FACT] WITH ( ONLINE = OFF )
ALTER TABLE OBS_FACT DROP CONSTRAINT OBS_FACT_PK
ALTER INDEX ALL ON OBS_FACT disable;
-- add new data to OBS_FACT table via ETL process
ALTER TABLE [dbo].[OBS_FACT] ADD CONSTRAINT [OBS_FACT_PK] PRIMARY KEY NONCLUSTERED
(
[ENCOUNTER_NUM] ASC,
[CONCEPT_CD] ASC,
[PROVIDER_ID] ASC,
[START_DATE] ASC,
[MODIFIER_CD] ASC,
[INSTANCE_NUM] ASC
) ON [PRIMARY]
CREATE CLUSTERED INDEX [OF_IDX_ClusteredConcept] ON [dbo].[OBS_FACT]
(
[CONCEPT_CD] ASC
);
-- REBUILD indexes on OBSERVATION_FACT …Run Code Online (Sandbox Code Playgroud) 当您在 Oracle 中创建对象并且未指定架构(对象前缀)时,该默认架构是否有名称?我在 Oracle SQL Developer 中看到,当没有指定前缀时,新创建的对象会出现在根对象节点中,而不是模式对象节点中。
在模式 X 下创建表:
X.table_1
在默认架构下创建表:
表格1
有没有办法通过在 SQL Server Management Studio 中按 F5 来运行多个 CREATE VIEW 命令和/或多个 GRANT SELECT 命令?如果是这样,我该怎么做?
sql-server ×6
index ×3
oracle ×3
schema ×2
t-sql ×2
connections ×1
ddl ×1
deployment ×1
drop-table ×1
etl ×1
identity ×1
migration ×1
permissions ×1
security ×1
sqlnet ×1
ssms ×1
table ×1
tnsnames ×1
view ×1