CRIAR DB SQL NA PASTA PADRAO DO SQL SERVER

LUIS.HERRERA 17/02/2016 10:37:46
#457766
Bom dia!

Estou criando um utilitário do meu sistema, que criará todos os bancos de dados necessário no servidor SQL do cliente, durante a instalação.

Problema
O cliente pode ter qualquer versão do SQL, seja full ou express acima da v.2008 R2. Sendo assim cada versão do SQL possui uma pasta diferente para armazenar os arquivos de banco.

No script gerado pelo próprio SQL de criação tem a instrução:

CREATE DATABASE [db_ArquivosDoc_01] ON  PRIMARY 
( NAME = N[ô]db_ArquivosDoc_01[ô], FILENAME = N[ô]c:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\db_ArquivosDoc_01.mdf[ô] , SIZE = 66560KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB )
LOG ON
( NAME = N[ô]db_ArquivosDoc_01_log[ô], FILENAME = N[ô]c:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\db_ArquivosDoc_01_log.ldf[ô] , SIZE = 39296KB , MAXSIZE = 2048GB , FILEGROWTH = 1024KB )
GO


DÚVIDAS:
Como alterar o código acima para que ele use a pasta padrão da versão do SQL do cliente? No exemplo o meu é SQL Express 2008 R2 e a pasta é: MSSQL10_50.MSSQLSERVER

LUIS.HERRERA 19/02/2016 14:51:30
#457916
Bom descobri e é muito simples até, posto a solução aqui.

Basta criar um Select comum assim:

Citação:


USE [master]
GO
SELECT physical_name FROM sys.database_files WHERE (name = [ô]master[ô]);



Este código retorna o path + o nome do banco principal do SQL Server (instância em uso). Para ter só o path, basta excluir desta string o nome do banco ao final que é master.mdf

Tópico encerrado , respostas não são mais permitidas