我正在编写一个脚本,它打算通过创建一个带有聚集索引的虚拟列然后立即删除它来对基于 HEAP 的表进行碎片整理。(这是别人的应用程序,我不想进行任何永久性更改 - 不过他们做得很好。)
ALTER TABLE my_heap ADD dummy BIGINT IDENTITY;
GO
CREATE CLUSTERED INDEX ix_dummy ON my_heap (dummy);
GO
-- need to wait here until index completes
DROP INDEX ix_dummy ON my_heap;
ALTER TABLE my_heap DROP COLUMN dummy;
GO
Run Code Online (Sandbox Code Playgroud)
当我运行脚本的各个步骤时,它工作正常。当我一次运行它时,似乎什么也没有发生(碎片级别不会下降)。我相信这是因为 DROP 发生在 CREATE CLUSTERED 完成之前 - 所以 CREATE CLUSTERED 没有时间做它的事情。
如何让 DROP 等待 CREATE CLUSTERED 完成?我正在为大约 30 张桌子这样做,所以我不想为每张桌子设置一个简单的等待延迟 15 分钟。
PS 使用 SQL Server 2005
如何从 MongoDB 客户端内执行 shell (bash) 命令?
使用 MySQL 客户端:
system (!) 执行系统 shell 命令。
MongoDB 有类似的东西吗?
在应用程序的开发过程中,用户通常想要添加新模块、业务规则等。所以我经常使用 SQL Server 2008 选项从开发数据库创建脚本以生成新表,然后我将在发布之前在生产服务器上执行应用程序的新版本。
所以我想知道有没有办法将整个生成脚本文件放在事务中,如果在将所有内容返回到以前的状态时出现错误,没有添加新表,插入数据等时回滚更改。
如果有原因这不是推荐的方法,请解释。
这个问题涉及获取列表。所以我明白了:
$ psql --list
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
----------------+----------+----------+-------------+-------------+-----------------------
testdb1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
odoo | openerp | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
odoo-demo | openerp | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
odoo8 | openerp | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
Run Code Online (Sandbox Code Playgroud)
我可以psql --list|grep UTF8|awk '{ print $1 }'用来获取仅包含数据库的列表。可psql也直接给我一个干净的有用列表?
跟踪标志用于临时设置特定服务器特征或关闭特定行为
有关跟踪标志的更多信息在这里
DBCC TRACESTATUS
Run Code Online (Sandbox Code Playgroud)
以上是显示当前在我的系统上运行的所有跟踪标志的命令。
我有两个问题:
1) 除了DBCC TRACESTATUS?之外,还有其他方法可以找到当前正在运行的跟踪标志列表吗?
2) 可以在上图中看到跟踪标志 1222 处于活动状态,但发生死锁时我没有收到任何电子邮件。还需要做什么?
我正在 SQL 2008 R2 Express 上自动备份 SQL Server 数据库。这些备份由 Windows 任务计划程序每天启动,它执行一个批处理文件,然后执行一个 SQL 脚本。我无法使用 SQL 代理,因为这是快速版本。
目前,我正在编写一个脚本,一个一个备份每个数据库。然而,这是相当高的维护 - 每次添加、删除或重命名数据库时,我都必须修改此脚本以反映这些更改。相反,我想编写一个 SQL 脚本来一次备份所有数据库,而不需要一个一个地明确备份每个数据库。
这是当前用于备份单个数据库的脚本:
Print 'Backing up MyDatabase...'
BACKUP DATABASE MyDatabase
TO DISK = 'F:\Backups\SQL Databases\MyDatabase.bak'
WITH FORMAT,
NAME = 'Full Backup of MyDatabase';
GO
Run Code Online (Sandbox Code Playgroud)
如何枚举所有数据库的列表并执行循环以对所有数据库执行此备份?
只是备份过程的一些附加说明:
我想创建一个脚本,该脚本将创建一些自定义命名架构并在其中创建一些表和函数。像这样:
文件example.sh:
#!/bin/bash
# this is the only place I want to set the schema name
SCH="ex"
export SCH
export PGPASSWORD="*******"
PSQL="psql \
-X \
-U postgres \
-h localhost \
--single-transaction \
--echo-all \
--set SCH=$SCH \
--set ON_ERROR_STOP=on "
eval $PSQL "-f ./example.sql"
Run Code Online (Sandbox Code Playgroud)
文件example.sql:
DROP SCHEMA IF EXISTS :SCH CASCADE;
CREATE SCHEMA :SCH;
CREATE TABLE :SCH.my_table
(
id SERIAL PRIMARY KEY,
my_col text
);
INSERT INTO :SCH.my_table (my_col) VALUES ('abc'), ('def');
CREATE OR REPLACE …Run Code Online (Sandbox Code Playgroud) 我正在使用sp_Blitz,并希望使用它来执行对我所有 SQL Server 的检查并将结果写入单个表。
我是否需要在中央实例上创建链接服务器以连接到其他实例,或者是否有其他方法可以将服务器名称输入到sp_Blitz存储过程中?
是否可以使用 T-SQL 在系统规范下进行查询?
我发现写入输出行(打印出变量)的格式似乎不一致。我找不到任何有关此的信息,这让我猜测我误解了我所看到的内容。
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- =-=-=-=
陈述:
对于大多数简单的变量,以下内容将起作用:
Write-Output " This $testValue will print just fine."
Run Code Online (Sandbox Code Playgroud)
但是,如果变量是对象的一部分,我需要将 $() 添加到 Write-Output 行:
Write-Output $("Removing old software from directory: " + $site.INSTALLDIR)
Run Code Online (Sandbox Code Playgroud)
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- =-=-=-=
问:上述说法正确吗?
scripting ×10
sql-server ×4
automation ×2
postgresql ×2
backup ×1
dbcc ×1
deadlock ×1
index ×1
mongodb ×1
mongodb-3.0 ×1
powershell ×1
psql ×1
rollback ×1
sp-blitz ×1
t-sql ×1
transaction ×1