una - ¿Cómo puedo consultar el nombre de la instancia actual de la base de datos de SQL Server?
tamaño de base de datos sql server (7)
No estoy seguro de lo que estabas preguntando exactamente. Mientras escribe este procedimiento para una necesidad de auditoría, supongo que se pregunta cómo se obtiene el nombre de la base de datos actual cuando el procedimiento almacenado existe en otra base de datos. p.ej
USE DATABASE1
GO
CREATE PROC spGetContext AS
SELECT DB_NAME()
GO
USE DATABASE2
GO
EXEC DATABASE1..spGetContext
/* RETURNS ''DATABASE1'' not ''DATABASE2'' */
Este es el comportamiento correcto, pero no siempre lo que estás buscando. Para evitar esto, necesita crear el SP en la base de datos maestra y marcar el procedimiento como un procedimiento del sistema. El método de hacer esto difiere entre las versiones de SQL Server, pero este es el método para SQL Server 2005 (es posible hacerlo en 2000 con la función master.dbo.sp_MS_upd_sysobj_category
).
USE MASTER
/* You must begin function name with sp_ */
CREATE FUNCTION sp_GetContext
AS
SELECT DB_NAME()
GO
EXEC sys.sp_MS_marksystemobject sp_GetContext
USE DATABASE2
/* Note - no need to reference master when calling SP */
EXEC sp_GetContext
/* RETURNS ''DATABASE2'' */
Espero que esto sea lo que estabas buscando
Es un tipo de pregunta de "gallina o huevo", pero ¿alguien puede idear una consulta que pueda devolver el nombre de la instancia actual de la base de datos en la que se ejecuta la consulta? Créame cuando digo que entiendo la paradoja: ¿por qué necesita saber el nombre de la instancia de la base de datos si ya está conectado para ejecutar la consulta? Auditoría en un entorno de múltiples bases de datos.
He visto todos los @@ globales en Libros en línea. " SELECT @@servername
" se acerca, pero quiero el nombre de la instancia de la base de datos en lugar del servidor.
Deberías poder usar:
SELECT SERVERPROPERTY (''InstanceName'')
Puedes usar DB_NAME () :
SELECT DB_NAME()
SELECT DB_NAME()
Devuelve el nombre de la base de datos.
SELECT DB_NAME() AS DatabaseName
simplemente use:
select @@servicename
SELECT
@@servername AS ''Server Name'' -- The database server''s machine name
,@@servicename AS ''Instance Name'' -- e.g.: MSSQLSERVER
,DB_NAME() AS ''Database Name''
,HOST_NAME() AS ''Host Name'' -- The database client''s machine name