标签: alter-database

一次将多个数据库从 C: 移动到 D:

我的 SQL Server 2008 R2 有 323 个数据库,在我的 C: 驱动器上消耗了大约 14 GB,这是一个快速的 SSD。

因为我想回收 C: 驱动器上的一些空间,所以我想将它们移动到我的 D: 驱动器。

我找到了这篇 MSDN 文章,但这似乎是只移动一个数据库的过程。

是否有自动方式或脚本一次移动我的所有数据库?

sql-server sql-server-2008-r2 alter-database

17
推荐指数
3
解决办法
1万
查看次数

无法镜像数据库 SQL Server 2012

尝试使用以下命令镜像数据库时

ALTER AVAILABILITY GROUP SQLAlwaysonGroup ADD DATABASE test0916aj8CJ
Run Code Online (Sandbox Code Playgroud)

我收到以下错误

消息 1475,级别 16,状态 105,第 1 行
数据库“test0916aj8CJ”可能包含尚未备份的批量记录更改。在主体数据库或主数据库上进行日志备份。然后在镜像数据库上还原此备份以启用数据库镜像,或在每个辅助数据库上还原此备份以使其能够加入可用性组。

这可以在不支持数据库的情况下完成吗?或者我应该备份然后丢弃备份。它用于新创建的数据库,因此此时我不需要备份。

我尝试了以下...

BACKUP
DATABASE [test0916aj8CJ] TO DISK = N’NUL’
WITH COPY_ONLY, NOFORMAT, INIT,
NAME = N’test-Full Database Backup’,
SKIP, NOREWIND, NOUNLOAD
GO
Run Code Online (Sandbox Code Playgroud)

但上述方法也不起作用。

谢谢

sql-server t-sql alter-database

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

游标/While 循环是对多个数据库进行管理更改的唯一方法吗?

我特别想要一种可编程方式来更改服务器上所有数据库的恢复模型,并且我知道此解决方案可以应用于所有“更改数据库”命令。虽然我知道 PowerShell 中的 SMO 可以很容易地解决这个问题:

Import-Module SQLPS
CD SQL\*ServerName*\*InstanceName*\databases
foreach ($database in (ls -force)){
$database.recoverymodel = 'Full'
$database.update
}
Run Code Online (Sandbox Code Playgroud)

我正在寻找最有效的 T-SQL 解决方案。不惜一切代价避免使用游标已经在我的脑海中根深蒂固,但是我想不出基于集合的解决方案来执行更改语句。这是基于游标的解决方案。

DECLARE @sql varchar(MAX), @name varchar(50)

DECLARE cur CURSOR FOR
SELECT name 
FROM sys.databases
where name <> 'tempdb';
OPEN cur

FETCH NEXT FROM cur 
INTO @name

WHILE @@FETCH_STATUS = 0
BEGIN
    SET @sql = 'ALTER DATABASE ' + @name + ' SET RECOVERY FULL;'
    exec(@sql)
    FETCH NEXT FROM cur INTO @name
END
CLOSE CUR
DEALLOCATE cur
Run Code Online (Sandbox Code Playgroud)
  1. 这也可以通过 while 循环来完成,但该解决方案仍要经过循环过程……while …

performance sql-server powershell smo alter-database

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

移动 tempdb .ndf 文件的最佳方法

在 SQL Server 安装过程中,我“认为”我将 tempdb 的位置指定在“F:”而不是“C:”上,但我可以看到,虽然 tempdb.mdf 和 templog.ldf 位于“F:”上,但 3 。 ndf 辅助数据文件位于“C:”上。

我正在考虑通过执行以下步骤来移动 .ndf 文件:

    1.
    ALTER DATABASE tempdb MODIFY FILE ( NAME = temp2 , FILENAME = 'F:\MSSQLData\temp2' )
    ALTER DATABASE tempdb MODIFY FILE ( NAME = temp3 , FILENAME = 'F:\MSSQLData\temp3' )
    ALTER DATABASE tempdb MODIFY FILE ( NAME = temp4 , FILENAME = 'F:\MSSQLData\temp4' )
Run Code Online (Sandbox Code Playgroud)
  1. 停止 SQL Server(该实例当前未执行任何操作)。
  2. 将 3 个 .ndf 文件从当前 C: 位置复制/粘贴到新的 F:\MSSQLData\ 位置
  3. 重新启动 SQL Server。
  4. 检查它是否有效:
    SELECT name, physical_name AS …
Run Code Online (Sandbox Code Playgroud)

sql-server configuration tempdb alter-database

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

用户无法在 PostgresSQL 数据库中创建架构

我正在尝试设置一个“部署”用户,除了选择、更新、插入和删除记录之外,它还可以在现有数据库上创建和更改表。

这是我到目前为止所尝试过的:

-- Create deployment user
CREATE ROLE deploy_user WITH LOGIN PASSWORD 'deploy_user';

-- Grant connect and create
GRANT CONNECT, CREATE ON DATABASE my_database TO deploy_user;

-- Grant create schema privilege
ALTER ROLE deploy_user CREATEDB;

-- Change db owner to deployment user
ALTER DATABASE my_database OWNER TO deploy_user;

-- Grant CRUD operations
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT INSERT, UPDATE, DELETE ON TABLES TO deploy_user;
Run Code Online (Sandbox Code Playgroud)

上述补助金均无效。我最终得到的是一个可以登录的用户,但仅此而已。我无法在任何表上选择、插入、更新、删除。我也无法更改架构。

有人可以帮忙吗?

postgresql permissions alter-database

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