Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом быстром старте вы подключаетесь к базе данных SQL Server из Go и запускаете запрос. Вы используете драйвер go-mssqldb со стандартным пакетом database/sql.
Prerequisites
Для основного примера в этой статье вам нужно:
- Go 1.25 или более поздняя версия
- Доступ к конечной точке, совместимой с SQL Server. Основной пример предполагает локальный экземпляр SQL Server на Windows.
- Образец базы данных
AdventureWorks2025. Для инструкций по скачиванию и восстановлению смотрите примеры баз данных AdventureWorks.
Если вы подключаетесь к Azure SQL вместо локального экземпляра SQL Server, используйте go-mssqldb с База данных SQL Azure для Azure-специфических требований и настройки.
Выберите начальную точку
Основной пример в этой статье использует локальный экземпляр SQL Server на Windows с интегрированной аутентификацией. Используйте варианты SQL-аутентификации или Microsoft Entra ID позже в этой статье, если вы используете Linux или macOS, либо подключаетесь к Azure SQL.
- Продолжайте читать эту статью, если вам нужен самый простой сквозной пример для SQL Server и вы можете создать локальную тестовую базу данных.
- Если вы подключаетесь с помощью SQL Server вместо проверка подлинности Windows, продолжите читать эту статью и используйте вариант SQL-аутентификации позже.
- Если вы подключаетесь к База данных SQL Azure, Управляемый экземпляр SQL Azure или SQL Database in Fabric, начните с Use go-mssqldb with База данных SQL Azure. В этой статье рассматриваются требования Azure TLS, ограничения соединения и аутентификацию без пароля.
- Если вы используете Microsoft Entra ID, импортируйте
github.com/microsoft/go-mssqldb/azureadи используйте имя драйвераazuresql. Для подробностей о потоке учетных данных см. аутентификация Microsoft Entra ID.
Создание проекта Go
Создайте и инициализуйте новый каталог:
mkdir go-sql-quickstart cd go-sql-quickstart go mod init go-sql-quickstartУстановите драйвер:
go get github.com/microsoft/go-mssqldb
Подключение и выполнение запросов
Создайте файл с именем main.go со следующим кодом Go:
package main
import (
"context"
"database/sql"
"fmt"
"log"
_ "github.com/microsoft/go-mssqldb"
)
func main() {
// Build the connection string.
connString := "sqlserver://<server>?database=AdventureWorks2025&trusted_connection=yes"
// Open and verify the connection.
db, err := sql.Open("sqlserver", connString)
if err != nil {
log.Fatal("Error opening connection: ", err.Error())
}
defer db.Close()
if err = db.PingContext(context.Background()); err != nil {
log.Fatal("Error pinging database: ", err.Error())
}
fmt.Println("Connected to SQL Server.")
// Run a SELECT query.
rows, err := db.QueryContext(context.Background(),
"SELECT DepartmentID, Name, GroupName FROM HumanResources.Department")
if err != nil {
log.Fatal("Error running query: ", err.Error())
}
defer rows.Close()
// Iterate through the results.
fmt.Println("\nDepartments:")
for rows.Next() {
var id int
var name, groupName string
if err := rows.Scan(&id, &name, &groupName); err != nil {
log.Fatal("Error scanning row: ", err.Error())
}
fmt.Printf(" %d: %s (%s)\n", id, name, groupName)
}
if err = rows.Err(); err != nil {
log.Fatal("Error after row iteration: ", err.Error())
}
}
Запустите приложение:
go run main.go
Ожидаемые выходные данные:
Connected to SQL Server.
Departments:
1: Engineering (Research and Development)
2: Tool Design (Research and Development)
3: Sales (Sales and Marketing)
4: Marketing (Sales and Marketing)
...
Вставьте строку
Добавьте следующую функцию в main.go и вызовите её из main():
func insertDepartment(db *sql.DB, name, groupName string) (int64, error) {
ctx := context.Background()
result, err := db.ExecContext(ctx,
"INSERT INTO HumanResources.Department (Name, GroupName) VALUES (@p1, @p2)",
sql.Named("p1", name),
sql.Named("p2", groupName))
if err != nil {
return 0, err
}
return result.RowsAffected()
}
Important
go-mssqldb Драйвер не поддерживает LastInsertId(). При его вызове возникает ошибка. Используйте OUTPUT клаузу или отдельный SELECT SCOPE_IDENTITY() запрос для получения вставленного значения идентичности.
Использование аутентификации SQL
Чтобы подключиться, используя аутентификацию SQL Server вместо проверка подлинности Windows, измените строка подключения. Для всех форматов и опций строка подключения см. раздел Connection strings.
connString := "sqlserver://<user>:<password>@<server>:1433?database=AdventureWorks2025"
Использование идентификатора Microsoft Entra
Если вы подключаетесь к База данных SQL Azure, Управляемый экземпляр SQL Azure или SQL Database in Fabric, начните с Use go-mssqldb with База данных SQL Azure. Пример в этом разделе показывает только минимальные изменения кода, требуемые в main.go.
Чтобы пройти аутентификацию с помощью Microsoft Entra ID, импортируйте пакет azuread:
import (
_ "github.com/microsoft/go-mssqldb/azuread"
)
Затем используйте имя драйвера azuresql и добавьте fedauth в строку подключения. Для всех вариантов Microsoft Entra см. раздел аутентификации Microsoft Entra ID.
db, err := sql.Open("azuresql", "sqlserver://<server>.database.windows.net?database=AdventureWorks2025&fedauth=ActiveDirectoryDefault&encrypt=true&TrustServerCertificate=false")