Connecting to MS SQL Server

লেসন ২৩ / ৫০

SQL Server Editions

  • SQL Server Express — free, 10GB DB limit
  • LocalDB — Express-এর dev সংস্করণ
  • Developer — full feature, dev only, free
  • Standard / Enterprise — paid
  • Azure SQL — cloud, managed

Tools

  • SSMS (SQL Server Management Studio) — Windows GUI
  • Azure Data Studio — cross-platform
  • dotnet-ef CLI

Connection String Examples

// 1. LocalDB (dev)
"Server=(localdb)\mssqllocaldb;Database=MyDb;Trusted_Connection=True;"

// 2. Local SQL Server with Windows auth
"Server=localhost;Database=MyDb;Trusted_Connection=True;TrustServerCertificate=True;"

// 3. SQL Server with username/password
"Server=localhost;Database=MyDb;User Id=sa;Password=YourPassword;TrustServerCertificate=True;"

// 4. Named instance
"Server=localhost\SQLEXPRESS;Database=MyDb;Trusted_Connection=True;"

// 5. Custom port
"Server=tcp:server.com,1433;Database=MyDb;User Id=sa;Password=...;"

// 6. Azure SQL
"Server=tcp:myserver.database.windows.net,1433;Database=MyDb;User Id=admin;Password=...;Encrypt=True;"

// 7. Connection pooling tuning
"...;Min Pool Size=5;Max Pool Size=100;Connection Timeout=30;"

Configure in Program.cs

builder.Services.AddDbContext<AppDbContext>(opt => {
    var connStr = builder.Configuration.GetConnectionString("Default");
    opt.UseSqlServer(connStr, sql => {
        sql.EnableRetryOnFailure(maxRetryCount: 3);
        sql.CommandTimeout(60);
        sql.MigrationsAssembly("MyApi");
    });

    if (builder.Environment.IsDevelopment()) {
        opt.EnableSensitiveDataLogging();
        opt.EnableDetailedErrors();
        opt.LogTo(Console.WriteLine, LogLevel.Information);
    }
});

Health Check

# dotnet add package AspNetCore.HealthChecks.SqlServer

builder.Services.AddHealthChecks()
    .AddSqlServer(builder.Configuration.GetConnectionString("Default"));

app.MapHealthChecks("/health");

Test Connection (Quick)

using var conn = new SqlConnection(connectionString);
await conn.OpenAsync();
var cmd = new SqlCommand("SELECT @@VERSION", conn);
var version = await cmd.ExecuteScalarAsync();
Console.WriteLine(version);

EF Core Database-First (Scaffold)

# বিদ্যমান DB থেকে Entity তৈরি
dotnet ef dbcontext scaffold "Server=...;Database=MyDb;..." \
    Microsoft.EntityFrameworkCore.SqlServer \
    --output-dir Models \
    --context AppDbContext \
    --use-database-names

Common Errors

Errorসমাধান
Cannot connectSQL Server service running? Firewall? port 1433?
Login failedSQL auth enabled? Mixed mode?
Certificate errorTrustServerCertificate=True (dev only)
TimeoutConnection Timeout বাড়ান