Questions tagged «ddl»

数据定义语言;定义数据库结构,但不定义其内容。


3
为什么要使用master创建数据库?
我有一个简短的问题,为什么要使用我use master;来创建数据库?这是Microsoft文档中的示例 USE master ; GO CREATE DATABASE Sales ON ( NAME = Sales_dat, FILENAME = 'C:\Program Files\...\saledat.mdf', SIZE = 10, MAXSIZE = 50, FILEGROWTH = 5 ) LOG ON ( NAME = Sales_log, FILENAME = 'C:\Program Files\...\salelog.ldf', SIZE = 5MB, MAXSIZE = 25MB, FILEGROWTH = 5MB ) ;


5
MySQL-用于InnoDB的ALTER TABLE的最快方法
我有一个要更改的InnoDB表。该表有约8000万行,并退出了一些索引。 我想更改其中一列的名称并添加更多索引。 最快的方法是什么(假设即使停机,我也可能会遭受痛苦-服务器是未使用的从属服务器)? 是“普通” alter table的最快解决方案吗? 此时,我只关心速度:)

2
如何使用T-SQL(不是SSMS)将登录名映射到数据库
我正在编写一个程序,要求我分配代码中的所有权限和所有内容。我陷入了这一部分: 我只想做相当于单击msdb数据库的“地图”下的小框,然后将该用户分配给SqlAgentUser角色的等效操作。我需要一个用户才能添加/编辑SQL Server代理作业。我可以使用SSMS正确进行设置,但是我一生都无法弄清楚如何在原始SQL中进行设置。 我已经研究过ALTER LOGIN,但是没有看到任何可以满足我需求的东西。我怀疑我只是不知道Google的正确用语。我通常不会做这种事情。 任何帮助深表感谢!

2
为什么我们不能将ddl语句直接写入PL / SQL块
为什么我们不能直接在PL / SQL块中编写ddl语句,例如当我编写时 CREATE OR REPLACE PROCEDURE test IS BEGIN truncate table table_name; // error END test; / 但, CREATE OR REPLACE PROCEDURE test IS BEGIN execute immediate 'truncate table table_name'; // works fine END test; / 为什么第二个成功执行?
11 oracle  plsql  ddl 

2
创建表时聚簇索引创建失败
运行以下脚本时出现错误; IF NOT EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE='BASE TABLE' AND TABLE_NAME='Table_Name') BEGIN CREATE TABLE Table_Name ( Field_Name_1 binary(32) NOT NULL CONSTRAINT PK_Name_Goes_Here PRIMARY KEY NONCLUSTERED , Field_Name_2 int NOT NULL , Field_Name_3 datetime NOT NULL INDEX IX_Name_Goes_Here CLUSTERED ) END 特别是聚集索引的创建会引发以下错误: 消息1018,级别15,状态1,第15行 'INDEX'附近的语法不正确。如果要将其用作表提示的一部分,则现在需要A WITH关键字和括号。有关正确的语法,请参见SQL Server联机丛书。 这很奇怪,因为它适用于我们所有的服务器,但特定的质量检查服务器除外。我们已经解决的问题是在表创建语句之外创建聚簇索引,但是如果有人之前遇到过此问题,我将很感兴趣。

2
PostgreSQL是否优化添加具有非NULL默认值的列?
在添加NOT NULL带有DEFAULT值的列时-PostgreSQL是否优化了此操作? 如果表有n行,那么未优化的alter-table-add-column将产生默认值的n次写入-显然,这很痛苦。通过优化,数据库将立即创建新列,仅存储默认值的一个副本,当在合适的索引数据结构中找不到该列的非默认值时将返回该默认值。 例如,Oracle 11g进行了这样的优化。

3
在提交之前,SQL Server是否允许事务中的DDL(使其可见)到事务中?
在PostgreSQL中,我可以创建一个包含一些测试数据的表,然后在事务中将其迁移到其他类型的新列,从而在上重写一个表COMMIT, CREATE TABLE foo ( a int ); INSERT INTO foo VALUES (1),(2),(3); 其次是, BEGIN; ALTER TABLE foo ADD COLUMN b varchar; UPDATE foo SET b = CAST(a AS varchar); ALTER TABLE foo DROP COLUMN a; COMMIT; 但是,Microsoft SQL Server中的同一件事似乎会产生错误。比较此工作的db fiddle,其中ADD(column)命令在事务之外, -- txn1 BEGIN TRANSACTION; ALTER TABLE foo ADD b …

4
TempDB上的DDL争用
我有一个SQL Server 2005 Standard x64,在过去的几个月中,TempDB DDL争用一直遇到问题。服务器将在等待资源2:1:103(等待类型为PAGELATCH_EX)上发生争用。 当服务器处于正常负载时,该问题似乎偶尔发生。我一直在监视“销毁临时表”的速率,在我们在2:1:103遇到PAGELATCH_EX问题时,它的速率可能会跳到5,000+。根据我的阅读,该计数器在大多数情况下应该为0,但在大多数情况下,我们的计数器似乎保持在300-1100之间。仅当系统上用户很少时,计数器才会变为0。 我如何缩小在tempdb上导致DDL争用的原因,而不必在干草堆中寻找针头?

1
如何将Oracle数据库的内容导入Visio以创建实体关系图?
我有一个Oracle数据库,我想在Visio 2007 Pro中创建一个ERD。 到目前为止,我已经看过DBMS_METADATA.GET_DDL命令来生成DDL。我知道我可以将Access DB导入Visio,但是Access似乎可以理解与Oracle不同的SQL方言,因此我需要调整每个Create Table命令以更改数据类型。 在Visio Pro 2007中是否有使用DDL创建ERD的简单方法?
9 oracle  import  erd  ddl  visio 

3
触发更改创建时的数据库排序规则
我正在尝试创建一个触发器,以更改数据库创建时的排序规则,但是如何捕获触发器中要使用的数据库名称? USE master GO CREATE TRIGGER trg_DDL_ChangeCOllationDatabase ON ALL SERVER FOR CREATE_DATABASE AS declare @databasename varchar(200) set @databasename =db_name() ALTER DATABASE @databasename COLLATE xxxxxxxxxxxxxxxxxxx GO 显然,这是行不通的。

1
SELECT INTO是否在运行时之前在TempDB中保留#Object名称?
汇集了一个快速处理程序以帮助调试,我遇到了编译器中似乎是错误的错误。 create proc spFoo @param bit as begin if @param = 0 begin select * into #bar from [master].dbo.spt_values -- where number between ... end else begin select top 10 * into #bar from [master].dbo.spt_values order by newid(); end; end; 尝试执行上述操作会返回以下错误 消息2714,级别16,状态1,过程spFoo,第19 行在数据库中已经有一个名为“ #bar”的对象。 在人类可读的意义上,该proc似乎很好:select into因为它们被包装在if-else块中,所以仅将执行一条语句。但是,非常好,SQL Server无法确认这些语句在逻辑上相互排斥。也许更令人困惑的是,将drop table #fooif放置在if-else块内时(如果假定它将告诉编译器取消分配对象名),错误仍然存​​在,如下所示。 create …

3
加快Postgres部分索引的创建
我正在尝试在Postgres 9.4中为大型(1.2TB)静态表创建部分索引。 我的数据是完全静态的,因此我可以插入所有数据,然后创建所有索引。 在这个1.2TB的表中,我有一列名为run_id,它清楚地划分了数据。通过创建覆盖run_ids 范围的索引,我们获得了出色的性能。这是一个例子: CREATE INDEX perception_run_frame_idx_run_266_thru_270 ON run.perception (run_id, frame) WHERE run_id >= 266 AND run_id <= 270; 这些部分索引为我们提供了所需的查询速度。不幸的是,每个部分索引的创建大约需要70分钟。 看来我们受CPU限制(top正在显示该进程的100%)。 我有什么办法可以加快创建部分索引的速度? 系统规格: 18核至强 192GB内存 RAID中的12个SSD 自动真空关闭 maintenance_work_mem:64GB(太高了吗?) 表规格: 大小:1.26 TB 行数:105.37亿 典型索引大小:3.2GB(存在〜.5GB的差异) 表定义: CREATE TABLE run.perception( id bigint NOT NULL, run_id bigint NOT NULL, frame bigint NOT NULL, …

3
在中央数据库中创建功能还是在每个数据库中重复?
我的一位开发人员编写了一个SQL函数,该函数的功能类似于VB.Net函数(LastIndexOf),并希望将其发布。我的问题是将其放入中央数据库而不是将其放入每个用户数据库的原因是什么? 开发人员试图将其放在sys模式中的主数据库上,这样他就不必限定来自用户数据库的调用... 但是我不确定将其集中到每个用户数据库的有效借口(显然不是主数据库)是什么?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.