Compendio de scripts para DBA MS-SQL

Comandos de uso diario en sistemas Linux
10 de septiembre de 2020
Crear el archivo de intercambio (swap) en linux
23 de septiembre de 2020

CREATE DATABASE YourDatabase;

GO

RESTORE BACKUP

USE master

GO

RESTORE DATABASE YourDatabase;

FROM DISK = ‘F:\\backup.bak’

WITH FILE = 1,

MOVE ‘fichero_db’ TO ‘D:\\db.mdf’,

MOVE ‘fichero_log’ TO ‘E:\\log.ldf’,

NOUNLOAD, STATS = 5

GO

BORRAR BASE DE DATOS

USE master

GO

ALTER DATABASE YourDatabase SET SINGLE_USER WITH ROLLBACK IMMEDIATE

GO

USE master

GO

DROP DATABASE YourDatabase

GO

RENOMBRAR BASE DE DATOS

USE master;

GO

ALTER DATABASE MyTestDatabase SET SINGLE_USER WITH ROLLBACK IMMEDIATE;

GO

ALTER DATABASE MyTestDatabase MODIFY NAME = MyTestDatabaseCopy;

GO

ALTER DATABASE MyTestDatabaseCopy SET MULTI_USER;

GO


VER PROCESOS CORRIENDO DE UNA DB

SELECT sd.name, sp.spid, sp.login_time, sp.loginame from sysprocesses sp inner join sysdatabases sd on sp.dbid = sp.dbid

where sd.name = ‘MyDB’

Referencias:

https://myadventuresincoding.wordpress.com/2014/03/06/sql-server-alter-database-in-single-user-mode-to-multi-user-mode

https://stackoverflow.com/questions/7197574/script-to-kill-all-connections-to-a-database-more-than-restricted-user-rollback


MATAR PROCESOS EN EJECUCIÓN (de una base de datos cuando no puede borrarse la db, ver script anterior)

Opción 1:

Right click on database engine, click on activity monitor and see which process is having connection.

Kill that particular user and execute the query Immediately.

Opción 2 (Recomendada):

For MS SQL Server 2012 and above:

USE master;

DECLARE @kill varchar(8000) = ”;

SELECT @kill = @kill + ‘kill ‘ + CONVERT(varchar(5), session_id) + ‘;’

FROM sys.dm_exec_sessions

WHERE database_id = db_id(‘yourDbName’)

EXEC(@kill);

Ponemos Offline la db para realizar las operaciones pertinentes:

USE master

ALTER DATABASE <yourDbName>

SET OFFLINE WITH ROLLBACK IMMEDIATE

For MS SQL Server 2000, 2005, 2008:

USE master;

DECLARE @kill varchar(8000); SET @kill = ‘ ‘;

SELECT @kill = @kill + ‘kill ‘ + CONVERT(varchar(5), spid) + ‘;’

FROM master.sysprocesses

WHERE dbid = db_id(‘yourDbName’)

EXEC(@kill);


Referencias:

https://stackoverflow.com/questions/7197574/script-to-kill-all-connections-to-a-database-more-than-restricted-user-rollback


TRUNCAR ARCHIVO LOG

SELECT * FROM sys.database_files;

DBCC SHRINKFILE(‘Dbname_Log’);

ALTER DATABASE Dbname;

SET RECOVERY SIMPLE;

GO

— Shrink the truncated log file to 1 MB.

DBCC SHRINKFILE (‘Dbname_Log’, 1);

GO

— Reset the database recovery model.

ALTER DATABASE Dbname

SET RECOVERY FULL;

GO


Referencias:

https://docs.microsoft.com/es-es/sql/t-sql/database-console-commands/dbcc-shrinkfile-transact-sql?view=sql-server-ver15


CAMBIAR UBICACION DE ARCHIVOS DE DATOS LOG Y DATOS

ALTER DATABASE NombreBaseDeDatos

MODIFY FILE (NAME = NombreDeDatos, FILENAME = ‘E:\ew_location\\Data.mdf’);

GO

ALTER DATABASE NombreBaseDeDatos

MODIFY FILE ( NAME = NombreDeLog, FILENAME = ‘E:\ew_location\\Log.ldf’);

GO ALTER DATABASE NombreBaseDeDatos SET OFFLINE;

GO

Ahora movemos el archivo físicamente cortando y pegando. Y volvemos a poner online la db.

ALTER DATABASE NombreBaseDeDatos SET ONLINE;

GO


BORRAR USUARIO DE BASE DE DATOS

USE nombre_db

GO

ALTER authorization

ON schema::db_owner

TO dbo

GO

DROP user nombre_user

GO

Nota: Asegurarse de tener seleccionada la DD.BB. correcta (desplegable de arriba a la izquierda).


VER UBICACION FÍSICA DE LOS FICHEROS DE DB

SELECT name, physical_name AS NewLocation, state_desc AS OnlineStatus FROM sys.master_files

WHERE database_id = DB_ID(‘NombreBaseDeDatos’)

GO

PASAR DDBB A SINGLE USER

ALTER DATABASE MyDB

SET SINGLE_USER with rollback inmediate

GO

PASAR DDBB A MULTI USUARIO

ALTER DATABASE MyDB

SET MULTI_USER with rollback inmediate

GO


Tutorial para crear job y poder truncar de manera programada el archivo de log:

https://www.c-sharpcorner.com/article/daily-shrink-database-log-automatically-using-jobs-in-sql-server

Deja una respuesta

gdpr-image
Este sitio web utiliza cookies para mejorar su experiencia. Al utilizar este sitio web, usted acepta nuestra Política de privacidad.
Leer más