Windows. Железо. Интернет. Безопасность. Программы
  • Главная
  • Windows 8
  • Узнать имя сервера sql. F.A.Q. по установке программы и необходимых компонентов

Узнать имя сервера sql. F.A.Q. по установке программы и необходимых компонентов

10

Моей работы компания имеет сервер MSSQL 2005. У меня есть два вопроса узнать текущий пользователь журналу и любой способ отправить предупреждающее сообщение:

Первый вопрос в том, есть ли T-SQL или SP для поиска текущего имени пользователя и имени машины. Если пользователь использует имя SQL-сервера для удаленного доступа к SQL-серверу, есть ли способ узнать имя этого окна пользователя (имя для входа в окна)?

Мой следующий вопрос: если я могу получить имя пользователя или идентификатор, есть ли способ отправить предупреждающее сообщение, например, «в настоящее время SQL-сервер очищается или резервное копирование, пожалуйста, не входите в систему в это время» , Наверное, это может быть сложно. Возможно, мне придется отправить электронное письмо пользователю.

Сервер SQL доступен только в компании. SQL-сервер имеет список пользователей в качестве пользователей входа: пользователи Windows, пользователи SQL и sa.

  • 3 ответа
  • Сортировка:

    Активность

30

SELECT SUSER_SNAME(), HOST_NAME()

Если соединение является «sa» (или любым другим логином SQL), вы не можете найти имя пользователя домена/окна. SQL Server знает, что это «sa» или это логин SQL.

HOST_NAME может быть и ненадежным, его можно установить в строке подключения («Имя приложения»). Или это может быть расплывчатым, например, «Microsoft Office» для по умолчанию для Access, Excel и т.д.

Вы можете вернуться назад с помощью client_net_address в sys.dm_exec_connections и соответствует MAC-адрес для IP и выяснить, кто вошел в...

4

An Самый простой способ узнать, как хост и пользователь является

EXEC sp_who2;

Где вы получите некоторую другую информацию, которая может быть хорошо, чтобы знать, как если бы пользователь активен и так далее... это не решает проблемы, объявлено gbn.

3

Благодарим за все ваши предложения. Я пробовал все методы, и я думаю, что метод Йоакима Бэкмана удовлетворяет мою потребность. Вот краткое изложение того, что я узнаю.

  • Запрос данных sys.syslogins содержит только регистрационную информацию. Аккаунт не указывает текущую временную метку пользователя. Я попытался войти в систему из другого приложения в мой SQL, и этот запрос не перечисляет логин.
  • SELECT SUSER_SNAME(), HOST_NAME() отображает только одного пользователя на сервере SQL. Например, я вхожу в систему как мое имя для SQL-сервера. Результат этого запроса содержит только мое имя и имя машины. Этот запрос не отображает текущих пользователей на сервере SQL.
  • exec sp_who2 содержит информацию, которая мне нужна. В нем перечислены имя текущего имени пользователя, активное состояние, доступ к имени пользователя db и используемая команда.

Для того чтобы получить информацию, которую я использую в SP, я должен фильтровать и присоединять информацию к другим таблицам, таким как электронные письма. Вот коды, которые я использую:

DECLARE @retTable TABLE (SPID int not null , Status varchar (255) not null , Login varchar (255) not null , HostName varchar (255) not null , BlkBy varchar(10) not null , DBName varchar (255) null , Command varchar (255) not null , CPUTime int not null , DiskIO int not null , LastBatch varchar (255) not null , ProgramName varchar (255) null , SPID2 int not null , REQUESTID INT) INSERT INTO @retTable EXEC sp_who2 SELECT Status, Login, HostName, DBName, Command, CPUTime, ProgramName -- * FROM @retTable --WHERE Login not like "sa%" -- if not interested in sa ORDER BY Login, HostName

Я установил Microsoft SQL Server 2008.

Когда я запускаю SQL Server Management Studio (SSMS), я получаю окно входа в Connect to Server с пустым текстовым полем для Server name . Я пробовал много имен, но я не мог его решить.

Как я могу найти / получить имя сервера?

Шаг 1: Убедитесь, что SQLEXPRESS и LocalDB установлены в вашей системе. Перейти к SQL SERVER Configuration Manager => Служба SQL Server

Если ничего не указано для служб SQL Server, установите ниже компоненты (для 64-разрядной ОС) 1. SqlLocalDB 2. SQLEXPR_x64_ENU 3. SQLEXPRADV_x64_ENU 4. SQLEXPRWT_x64_ENU

Шаг 2: Ввести ввод в эксплуатацию. (Dot) в качестве имени сервера и нажмите «Подключить» [введите описание изображения здесь] Вновь введите. \ SQLEXPRESS в качестве имени сервера и нажмите на соединение

1.Вы можете запустить следующую команду.

EXEC xp_cmdshell "reg query "HKLM \ Software \ Microsoft \ Microsoft SQL Server \ Имена экземпляров \ SQL"";
ИДТИ

2. использование встроенного стандартного отчета.

выберите экземпляр -> щелкните правой кнопкой мыши-> Отчеты -> Стандартные отчеты -> Сервер Dashbords

Существует много способов, упомянутых выше. Но я использую довольно простой способ (ну не простой, как SELECT @@ SERVERNAME ). Когда вы запустите студию управления SQL-сервером, вы увидите подсказку ниже GUI

Там Имя сервера - это имя вашего сервера (может быть несколько серверов в соответствии с вашей средой dev, выберите правильный). Надеюсь это поможет:)

учитывая следующие примеры

  • Имя экземпляра SQL: MSSQLSERVER
  • Порт: 1433
  • Имя хоста: MyKitchenPC
  • IPv4: 10.242.137.227
  • DNS Суффикс: dir.svc.mykitchencompany.com

вот ваши возможные имена серверов:

  • локальный \ MSSQLSERVER
  • локальный, 1433 \ MSSQLSERVER
  • MyKitchenPC, 1433 \ MSSQLSERVER
  • 10.242.137.227,1433 \ MSSQLSERVER
  • MyKitchenPC.dir.svc.mykitchencompany.com, 1433 \ MSSQLSERVER

start -> CMD -> (Write comand) SQLCMD -L первая строка - это имя сервера, если имя сервера (локальное) Имя сервера: YourPcName \ SQLEXPRESS

Запустите этот запрос, чтобы получить имя

Как упоминалось @ Khaneddy2013, cmd SQLCMD -L не возвращает имя сервера при запуске. Bcz Я только установил SSMS (локальный db и сервер не были установлены). После попытки установки SqlLocaLDB и SQLEXPR32_x86_ENU (32-разрядная ОС) я смог подключиться. И теперь в окне cmd также отображаются имена серверов.

имя сервера по умолчанию - это имя вашего компьютера, но вы можете использовать «.». (Dot) вместо имени локального сервера.

еще одна вещь, которую вы должны рассмотреть, возможно, вы установили SQL Server Express Edition. в этом случае вы должны ввести «. \ sqlexpress» в качестве имени сервера.

моя проблема заключалась в том, что при подключении к базе данных SQL в мастере добавления ссылок найдите SERVERNAME. Я нашел его, выполнив запрос (SELECT @@ SERVERNAME) внутри студии управления SQL, а reusl - мое имя сервера. Я положил это в поле имени сервера, и все прошло отлично.

У меня также была эта проблема в первый раз.

В диалоговом окне «Подключение к серверу» проверьте настройки по умолчанию и нажмите «Подключиться». Для подключения в поле Имя сервера должно быть указано имя компьютера, на котором установлен SQL Server. Если Database Engine является именованным экземпляром, поле «Имя сервера» также должно содержать имя экземпляра в формате: имя_компьютера \ имя_экземпляра.

Так, например, я решил проблему следующим образом: я набрал имя сервера: Alex-PC \ SQLEXPRESS

Изменение имени компьютера с установленным экземпляром MS SQL Server — не самая хорошая идея, поскольку после переименования в работе SQL могут возникнуть некоторые проблемы. Чтобы избежать этих проблем, необходимо обновить системные метаданные таким образом, чтобы отобразить в них изменение имени компьютера.

Сделать это можно с помощью несложного SQL запроса. Так выглядит запрос для дефолтного экземпляра SQL Server:

sp_dropserver ″old_name″;
GO
sp_addserver ″new_name″, local;
GO

А так для именованного:

sp_dropserver ″old_name\InstanceName″;
GO
sp_addserver ″new_name\InstanceName″, local;
GO

Для примера возьмем компьютер с установленным экземпляром MS SQL Server. Чтобы посмотреть текущее имя сервера, открываем SQL Management Studio и выполняем запрос:

select @@Servername

Как видите, имя сервера, полученное с помощью запроса (2012R2Std_Temp) не совпадает с именем компьютера (SQL_Test).

Поскольку в примере используется дефолтный экземпляр SQL Server, то для изменения имени выполним следующий запрос:

sp_dropserver ″2012R2Std_Temp″;
GO
sp_addserver ″SQL_Test″, local;
GO

После переименования необходимо перезапустить SQL Server. Сделать это можно из командной строки, командой:

net stop mssqlserver && net start mssqlserver

При установке Microsoft SQL Server, внутреннее имя экземпляра SQL сервера создается на основании текущего имени хоста. Однако, при переименовании компьютера/сервера, имя SQL сервера в метаданных (хранится в sys.servers) не обновляется автоматически, в результате чего при работе с SQL могут возникать разные проблемы. В этой инструкции мы покажем, как корректно обновить метаданные в SQL и изменить имя сервера без полной переустановки MSSQL. Инструкция применима для отдельно стоящего (не кластерного) SQL Server версий от MS SQL 2000 до 2012.

Совет . Можно сменить только имя севера, изменить имя экземпляра (инстанса) SQL Server без переустановки нельзя.

Откройте консоль SQL Server Management Studio и с помощью следующего запроса проверьте текущее имя хоста и имя инстанса SQL:

Как вы видите:

  • Имя сервера (HostName): DESKTOP-V2OE3P0
  • Полное имя экземпляра SQL (ServerName): DESKTOP-V2OE3P0\SQLDB

Переименуем имя компьютер и перезагрузим его:

Rename-Computer -NewName Sql-Srv1 -Restart

Совет . Имя компьютера можно сменить и из свойств My Computer.

После перезагрузки попробуйте подключится к старому имени сервера SQL: DESKTOP-V2OE3P0\SQLDB. Появится ошибка, ведь имя сервера изменилось.

Cannot connect to DESKTOP-V2OE3P0\SQLDB.
A network-related or Instant-specific error occurred when establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interface, error: 26 – Error Locating Server/Instance Specified) (Microsoft SQL Server)

Еще раз проверим имя хоста и имя инстанса:

Select @@ServerName ServerName, Host_name() HostName

В данном случае имя инстанса не соответствует имени компьютера и ссылается на старое имя компьютера DESKTOP-V2OE3P0.

Чтобы изменить имя для именованного экземпляра SQL, выполните следующую команду TSQL.

Удалить старое имя:

sp_dropserver "DESKTOP-V2OE3P0\SQLDB";
Go

Добавим новое имя:

sp_addserver "Sql-Srv1\SQLDB", local;
GO

Если нужно сменить имя сервера у дефолтного экземпляра SQL Server команда такая:

sp_dropserver ″OldName″;
GO
sp_addserver ″NewName″, local;
GO

Дополнительные шаги

Если при выполнении команды sp_dropserver появится ошибка:

Msg 15190, Level 16, State 1, Procedure sp_dropserver, Line 56

Скорее всего, имеются удаленные подключения к серверу DESKTOP-V2OE3P0. Сбросить их можно такими командами. Для дефолтного инстанса:

sp_dropremotelogin DESKTOP-V2OE3P0;
GO

Для именованного:

sp_dropremotelogin DESKTOP-V2OE3P0\SQLDB;
GO

Проверим, что имя сервера в метаданных обновилось:

SELECT @@SERVERNAME AS ‘ServerName’

SELECT * FROM SYS.SERVERS

Как вы видите, имя сервера изменилось. Осталось перезапустить службу SQL Server:

net stop MSSQL$SQLDB && net start MSSQL$SQLDB

Важно!

  • Этот способ подойдет только для переименования отдельностоящего SQL сервера. Для переименования SQL Server в кластере Failover Cluster нужно использовать консоль Cluster Management.
  • Нельзя изменить имя сервера, участвующего в репликации или зеркалировании
  • Если установлены службы отчетов Reporting services, после переименования они будут недоступны (https://msdn.microsoft.com/en-us/library/ms345235.aspx)

Лучшие статьи по теме