Yandex.Cloud
  • Сервисы
  • Почему Yandex.Cloud
  • Сообщество
  • Решения
  • Тарифы
  • Документация
  • Связаться с нами
Подключиться
Yandex Managed Service for SQL Server™
  • Начало работы
  • Пошаговые инструкции
    • Все инструкции
    • Информация об имеющихся кластерах
    • Создание кластера
    • Подключение к базе данных
    • Остановка и запуск кластера
    • Изменение настроек кластера и базы данных
    • Управление хостами SQL Server
    • Управление базами данных
    • Управление пользователями
    • Назначение привилегий и ролей
    • Управление резервными копиями
    • Удаление кластера
  • Концепции
    • Взаимосвязь ресурсов сервиса
    • Классы хостов
    • Сеть в Managed Service for SQL Server
    • Квоты и лимиты
    • Типы хранилища
    • Резервные копии
  • Управление доступом
  • Правила тарификации
  • Справочник API
    • Аутентификация в API
    • gRPC
      • Обзор
      • BackupService
      • ClusterService
      • DatabaseService
      • OperationService
      • ResourcePresetService
      • UserService
      • OperationService
    • REST
      • Обзор
      • Backup
        • Обзор
        • get
        • list
      • Cluster
        • Обзор
        • backup
        • create
        • delete
        • get
        • list
        • listBackups
        • listHosts
        • listLogs
        • listOperations
        • move
        • restore
        • start
        • stop
        • update
      • Database
        • Обзор
        • create
        • delete
        • get
        • list
      • Operation
        • Обзор
        • get
      • ResourcePreset
        • Обзор
        • get
        • list
      • User
        • Обзор
        • create
        • delete
        • get
        • grantPermission
        • list
        • revokePermission
        • update
  • Вопросы и ответы
    • Общие вопросы
  1. Пошаговые инструкции
  2. Подключение к базе данных

Подключение к базе данных в кластере SQL Server

  • Получение и установка SSL-сертификата
  • Примеры строк подключения

К хостам кластера Managed Service for SQL Server можно подключиться:

  • Через интернет, если вы настроили публичный доступ для нужного хоста. К такому кластеру можно подключиться только используя SSL-соединение.
  • С виртуальных машин Yandex.Cloud, расположенных в той же виртуальной сети. Если к кластеру нет публичного доступа, для подключения с таких ВМ SSL-соединение использовать необязательно.

Получение и установка SSL-сертификата

Чтобы использовать шифрованное SSL-соединение, необходимо получить SSL-сертификат и добавить его в хранилище доверенных сертификатов операционной системы:

Ubuntu 20.04
$ sudo mkdir -p /usr/local/share/ca-certificates/Yandex && \
sudo wget "https://storage.yandexcloud.net/cloud-certs/CA.pem" -O /usr/local/share/ca-certificates/Yandex/YandexCA.crt && \
sudo update-ca-certificates

Примеры строк подключения

Примеры проверялись в следующем окружении:

  • Виртуальная машина в Yandex.Cloud c Ubuntu 20.04 LTS.
  • Bash: 5.0.16.
  • mono-complete: 6.8.0.105.
  • Python: 3.8.2; pip3: 20.0.2.
  • OpenJDK: 11.0.8; Maven: 3.6.3.
  • PHP: 7.4.3.

Пример команды с заполненным FQDN хоста вы можете посмотреть в консоли управления, нажав на кнопку Подключиться на странице кластера.

Bash
Bash (SSL)
C#
C# (SSL)
Java
Java (SSL)
Go
Go (SSL)
ODBC
ODBC (SSL)
  1. Установите зависимости:

    $ sudo apt update && \
    sudo apt install python3-pip python-is-python3 && \
    pip3 install mssql-cli && \
    source ~/.profile
    
  2. По умолчанию Microsoft собирает анонимные данные об использовании клиентской утилиты mssql-cli, подробнее см. документацию утилиты mssql-cli. Чтобы отключить автоматический сбор данных, выполните команду:

    $ export MSSQL_CLI_TELEMETRY_OPTOUT=True
    
  3. Подключитесь к базе данных:

    $ mssql-cli -U <имя пользователя> \
              -d <имя базы данных> \
              -S <FQDN хоста>,1433
    

    После выполнения команды введите пароль пользователя для завершения процедуры подключения.

  4. Для проверки успешности подключения запросите версию СУБД SQL Server:

    SELECT @@version;
    
  1. Установите зависимости:

    $ sudo apt update && \
    sudo apt install python3-pip python-is-python3 && \
    pip3 install mssql-cli && \
    source ~/.profile
    
  2. По умолчанию Microsoft собирает анонимные данные об использовании клиентской утилиты mssql-cli, подробнее см. документацию утилиты mssql-cli. Чтобы отключить автоматический сбор данных, выполните команду:

    $ export MSSQL_CLI_TELEMETRY_OPTOUT=True
    
  3. Подключитесь к базе данных:

    $ mssql-cli -U <имя пользователя> \
              -d <имя базы данных> \
              -S <FQDN хоста>,1433 \
              -N
    

    После выполнения команды введите пароль пользователя для завершения процедуры подключения.

  4. Для проверки успешности подключения запросите версию СУБД SQL Server:

    SELECT @@version;
    
  1. Установите зависимости:

    $ sudo apt update && \
    sudo apt install mono-complete nuget && \
    sudo nuget update -self && \
    nuget install System.Data.SqlClient
    
  2. Пример кода:

    connect.cs

    using System;
    using System.Data.SqlClient;
    
    namespace ConsoleApp1
    {
        class Program
        {
            static void Main(string[] args)
            {
                var server = "<FQDN хоста>";
                var database = "<имя базы данных>";
                var uid = "<имя пользователя>";
                var pwd = "<пароль пользователя>";
    
                var connectionString = String.Format("Server={0},1433;Database={1};Uid={2};Pwd={3};Trusted_Connection=no;Encrypt=no;", server, database, uid, pwd);
                SqlConnection connection = new SqlConnection(connectionString);
                try
                {
                    SqlCommand command = new SqlCommand("SELECT @@version;", connection);
                    connection.Open();
                    using (SqlDataReader reader = command.ExecuteReader())
                    {
                        while (reader.Read())
                        {
                            Console.WriteLine(reader[0]);
                        }
                    }
                }
                catch (Exception e)
                {
                    Console.WriteLine(e);
                    throw;
                }
                finally
                {
                    connection.Close();
                }
            }
        }
    }
    
  3. Сборка и подключение:

    $ mcs connect.cs -r:System.Data.dll && \
    mono connect.exe
    

    При успешном подключении к кластеру и выполнении тестового запроса будет выведена версия SQL Server.

  1. Установите зависимости:

    $ sudo apt update && \
    sudo apt install mono-complete nuget && \
    sudo nuget update -self && \
    nuget install System.Data.SqlClient
    
  2. Пример кода:

    connect.cs

    using System;
    using System.Data.SqlClient;
    
    namespace ConsoleApp1
    {
        class Program
        {
            static void Main(string[] args)
            {
                var server = "<FQDN хоста>";
                var database = "<имя базы данных>";
                var uid = "<имя пользователя>";
                var pwd = "<пароль пользователя>";
    
                var connectionString = String.Format("Server={0},1433;Database={1};Uid={2};Pwd={3};Trusted_Connection=no;Encrypt=yes;", server, database, uid, pwd);
                SqlConnection connection = new SqlConnection(connectionString);
                try
                {
                    SqlCommand command = new SqlCommand("SELECT @@version;", connection);
                    connection.Open();
                    using (SqlDataReader reader = command.ExecuteReader())
                    {
                        while (reader.Read())
                        {
                            Console.WriteLine(reader[0]);
                        }
                    }
                }
                catch (Exception e)
                {
                    Console.WriteLine(e);
                    throw;
                }
                finally
                {
                    connection.Close();
                }
            }
        }
    }
    
  3. Сборка и подключение:

    $ mcs connect.cs -r:System.Data.dll && \
    mono connect.exe
    

    При успешном подключении к кластеру и выполнении тестового запроса будет выведена версия SQL Server.

  1. Установите зависимости:

    $ sudo apt install default-jdk maven
    
  2. Создайте директорию для проекта Maven:

    $ cd ~/ && mkdir -p project/src/java/com/example && cd project/
    
  3. Создайте конфигурационный файл для Maven:

    pom.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <project
        xmlns="http://maven.apache.org/POM/4.0.0"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <groupId>com.example</groupId>
        <artifactId>app</artifactId>
        <packaging>jar</packaging>
        <version>0.1.0</version>
        <properties>
            <maven.compiler.source>1.8</maven.compiler.source>
            <maven.compiler.target>1.8</maven.compiler.target>
        </properties>
        <dependencies>
            <dependency>
                <groupId>com.microsoft.sqlserver</groupId>
                <artifactId>mssql-jdbc</artifactId>
                <version>8.4.0.jre11</version>
            </dependency>
    	  </dependencies>
    	<build>
        	<finalName>${project.artifactId}-${project.version}</finalName>
        	<sourceDirectory>src</sourceDirectory>
    		<resources>
        		<resource>
       	     	<directory>src</directory>
        		</resource>
        	</resources>
       	<plugins>
       		<plugin>
           		<groupId>org.apache.maven.plugins</groupId>
           		<artifactId>maven-assembly-plugin</artifactId>
           		<executions>
           			<execution>
           				<goals>
       	    				<goal>attached</goal>
           				</goals>
       	    			<phase>package</phase>
       	    			<configuration>
       		    			<descriptorRefs>
       			    			<descriptorRef>jar-with-dependencies</descriptorRef>
       		    			</descriptorRefs>
       			    		<archive>
       			    			<manifest>
       			    				<mainClass>com.example.App</mainClass>
       			    			</manifest>
       	    				</archive>
       	    			</configuration>
       	    		</execution>
    	    		</executions>
       		</plugin>
    			<plugin>
        			<groupId>org.apache.maven.plugins</groupId>
           		<artifactId>maven-jar-plugin</artifactId>
        			<version>3.1.0</version>
       			<configuration>
           			<archive>
           				<manifest>
            					<mainClass>com.example.App</mainClass>
        	     			</manifest>
       	    		</archive>
       			</configuration>
       		</plugin>
       	</plugins>
       </build>
    </project>
    
  4. Пример кода:

    src/java/com/example/App.java

    package com.example;
    
    import java.sql.*;
    
    public class App {
    
        public static void main(String[] args) {
            String server = "<FQDN хоста>";
            String database = "<имя базы данных>";
            String user = "<имя пользователя>";
            String password = "<пароль пользователя>";
    
            String connectionString = String.format(
                    "jdbc:sqlserver://%s:1433;" +
                    "database=%s;" +
                    "user=%s;" +
                    "password=%s;" +
                    "encrypt=false;" +
                    "trustServerCertificate=false;" +
                    "loginTimeout=30;",
                    server, database, user, password);
            try {
                Connection connection = DriverManager.getConnection(connectionString);
                ResultSet q = connection.createStatement().executeQuery("SELECT @@version;");
                if(q.next()) {System.out.println(q.getString(1));}
                connection.close();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }
    }
    
  5. Сборка и подключение:

    $ mvn clean package && \
    java -jar target/app-0.1.0-jar-with-dependencies.jar
    

    При успешном подключении к кластеру и выполнении тестового запроса будет выведена версия SQL Server.

  1. Установите зависимости:

    $ sudo apt install default-jdk maven
    
  2. Добавьте SSL-сертификат в хранилище доверенных сертификатов Java (Java Key Store), чтобы драйвер SQL Server мог использовать этот сертификат при защищенном подключении к хостам кластера. При этом задайте пароль в параметре -storepass для дополнительной защиты хранилища:

    $ cd /etc/security && \
    sudo keytool -importcert -alias YandexCA -file /usr/local/share/ca-certificates/Yandex/YandexCA.crt -keystore ssl -storepass <пароль хранилища сертификатов> --noprompt
    
  3. Создайте директорию для проекта Maven:

    $ cd ~/ && mkdir -p project/src/java/com/example && cd project/
    
  4. Создайте конфигурационный файл для Maven:

    pom.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <project
        xmlns="http://maven.apache.org/POM/4.0.0"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <groupId>com.example</groupId>
        <artifactId>app</artifactId>
        <packaging>jar</packaging>
        <version>0.1.0</version>
        <properties>
            <maven.compiler.source>1.8</maven.compiler.source>
            <maven.compiler.target>1.8</maven.compiler.target>
        </properties>
        <dependencies>
            <dependency>
                <groupId>com.microsoft.sqlserver</groupId>
                <artifactId>mssql-jdbc</artifactId>
                <version>8.4.0.jre11</version>
            </dependency>
    	  </dependencies>
    	<build>
        	<finalName>${project.artifactId}-${project.version}</finalName>
        	<sourceDirectory>src</sourceDirectory>
    		<resources>
        		<resource>
       	     	<directory>src</directory>
        		</resource>
        	</resources>
       	<plugins>
       		<plugin>
           		<groupId>org.apache.maven.plugins</groupId>
           		<artifactId>maven-assembly-plugin</artifactId>
           		<executions>
           			<execution>
           				<goals>
       	    				<goal>attached</goal>
           				</goals>
       	    			<phase>package</phase>
       	    			<configuration>
       		    			<descriptorRefs>
       			    			<descriptorRef>jar-with-dependencies</descriptorRef>
       		    			</descriptorRefs>
       			    		<archive>
       			    			<manifest>
       			    				<mainClass>com.example.App</mainClass>
       			    			</manifest>
       	    				</archive>
       	    			</configuration>
       	    		</execution>
    	    		</executions>
       		</plugin>
    			<plugin>
        			<groupId>org.apache.maven.plugins</groupId>
           		<artifactId>maven-jar-plugin</artifactId>
        			<version>3.1.0</version>
       			<configuration>
           			<archive>
           				<manifest>
            					<mainClass>com.example.App</mainClass>
        	     			</manifest>
       	    		</archive>
       			</configuration>
       		</plugin>
       	</plugins>
       </build>
    </project>
    
  5. Пример кода:

    src/java/com/example/App.java

    package com.example;
    
    import java.sql.*;
    
    public class App {
    
        public static void main(String[] args) {
            String server = "<FQDN хоста>";
            String database = "<имя базы данных>";
            String user = "<имя пользователя>";
            String password = "<пароль пользователя>";
    
            String connectionString = String.format(
                    "jdbc:sqlserver://%s:1433;" +
                    "database=%s;" +
                    "user=%s;" +
                    "password=%s;" +
                    "encrypt=true;" +
                    "trustServerCertificate=false;" +
                    "loginTimeout=30;",
                    server, database, user, password);
            try {
                Connection connection = DriverManager.getConnection(connectionString);
                ResultSet q = connection.createStatement().executeQuery("SELECT @@version;");
                if(q.next()) {System.out.println(q.getString(1));}
                connection.close();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }
    }
    
  6. Сборка и подключение:

    $ mvn clean package && \
    java -jar target/app-0.1.0-jar-with-dependencies.jar
    

    При успешном подключении к кластеру и выполнении тестового запроса будет выведена версия SQL Server.

  1. Установите зависимости:

    $ go get github.com/denisenkom/go-mssqldb
    
  2. Пример кода:

    import (
        _ "github.com/denisenkom/go-mssqldb"
        "database/sql"
    )
    
    connStr := `
            server=<FQDN хоста>;
            port=1433;
            database=<имя базы данных>;
            user id=<имя пользователя>;
            password=<пароль пользователя>
    `
    conn, err := sql.Open("sqlserver", connStr)
    
  1. Установите зависимости:

    $ go get github.com/denisenkom/go-mssqldb
    
  2. Пример кода:

    import (
        _ "github.com/denisenkom/go-mssqldb"
        "database/sql"
    )
    
    connStr := `
            server=<FQDN хоста>;
            port=1433;
            database=<имя базы данных>;
            user id=<имя пользователя>;
            password=<пароль пользователя>;
            encrypt=true;
            TrustServerCertificate=false
    `
    conn, err := sql.Open("sqlserver", connStr)
    
  1. Установите зависимости:

    $ sudo apt install unixodbc unixodbc-dev && \
    curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add - && \
    curl https://packages.microsoft.com/config/ubuntu/20.04/prod.list | sudo tee /etc/apt/sources.list.d/mssql-release.list && \
    sudo apt update && \
    sudo ACCEPT_EULA=Y apt install msodbcsql17
    
  2. Пример кода:

    [sqlserver]
    
    Driver={ODBC Driver 17 for SQL Server};
    Server=<FQDN хоста>,1433;
    Database=<имя базы данных>;
    Uid=<имя пользователя>;
    Pwd=<пароль пользователя>;
    Encrypt=no;
    TrustServerCertificate=no;
    Connection Timeout=30;
    
  1. Установите зависимости:

    $ sudo apt install unixodbc unixodbc-dev && \
    curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add - && \
    curl https://packages.microsoft.com/config/ubuntu/20.04/prod.list | sudo tee /etc/apt/sources.list.d/mssql-release.list && \
    sudo apt update && \
    sudo ACCEPT_EULA=Y apt install msodbcsql17
    
  2. Пример кода:

    [sqlserver]
    
    Driver={ODBC Driver 17 for SQL Server};
    Server=<FQDN хоста>,1433;
    Database=<имя базы данных>;
    Uid=<имя пользователя>;
    Pwd=<пароль пользователя>;
    Encrypt=yes;
    TrustServerCertificate=no;
    Connection Timeout=30;
    
В этой статье:
  • Получение и установка SSL-сертификата
  • Примеры строк подключения
Language
Вакансии
Политика конфиденциальности
Условия использования
© 2021 ООО «Яндекс.Облако»