mirror of
https://github.com/Microsoft/sql-server-samples.git
synced 2025-12-08 14:58:54 +00:00
Adding the samples content from extending the getting started website for azure specific workflows
63 lines
1.5 KiB
Go
63 lines
1.5 KiB
Go
package main
|
|
|
|
import (
|
|
_ "github.com/denisenkom/go-mssqldb"
|
|
"database/sql"
|
|
"context"
|
|
"log"
|
|
"fmt"
|
|
"time"
|
|
)
|
|
|
|
var server = "your_server.database.windows.net"
|
|
var user = "your_user"
|
|
var password = "your_password"
|
|
var database = "your_database"
|
|
|
|
var db *sql.DB
|
|
|
|
// Delete an employee from database
|
|
func ExecuteAggregateStatement(db *sql.DB) {
|
|
ctx := context.Background()
|
|
|
|
// Ping database to see if it's still alive.
|
|
// Important for handling network issues and long queries.
|
|
err := db.PingContext(ctx)
|
|
if err != nil {
|
|
log.Fatal("Error pinging database: " + err.Error())
|
|
}
|
|
|
|
var result string
|
|
|
|
// Execute long non-query to aggregate rows
|
|
err = db.QueryRowContext(ctx, "SELECT SUM(Price) as sum FROM Table_with_3M_rows").Scan(&result)
|
|
if err != nil {
|
|
log.Fatal("Error executing query: " + err.Error())
|
|
}
|
|
|
|
fmt.Printf("Sum: %s\n", result)
|
|
}
|
|
|
|
func main() {
|
|
// Connect to database
|
|
connString := fmt.Sprintf("server=%s;user id=%s;password=%s;database=%s;",
|
|
server, user, password, database)
|
|
var err error
|
|
|
|
// Create connection pool
|
|
db, err = sql.Open("sqlserver", connString)
|
|
if err != nil {
|
|
log.Fatal("Open connection failed:", err.Error())
|
|
}
|
|
fmt.Printf("Connected!\n")
|
|
|
|
defer db.Close()
|
|
|
|
t1 := time.Now()
|
|
fmt.Printf("Start time: %s\n", t1)
|
|
|
|
ExecuteAggregateStatement(db)
|
|
|
|
t2 := time.Since(t1)
|
|
fmt.Printf("The query took: %s\n", t2)
|
|
} |