Microsoft SQL Server ist ein von [[Microsoft]] entwickelter [[Datenbank]] Server. [[https://www.dbvis.com/docs/12.0/working-with-sql/using-client-side-commands/export-export-query-result/|Query to CSV Export]] SELECT @@SERVERNAME AS ServerName, SERVERPROPERTY('MachineName') AS MachineName, SERVERPROPERTY('InstanceName') AS InstanceName, SERVERPROPERTY('Edition') AS Edition, SERVERPROPERTY('ProductVersion') AS ProductVersion, SERVERPROPERTY('ProductLevel') AS ProductLevel; Get-Service | Where-Object { $_.Name -like "MSSQL*" } sqlcmd -L osql -L sqllocaldb info =====Server umbenennen===== * Server aus der Domäne raus * Server umbenennen * Server wieder joinen Oder ohne Rejoin netdom renamecomputer %computername% /newname:NEUERNAME /userd:DOMÄNE\Admin /passwordd:* Danach den Servernamen in SQL Server umbenennen. ====Default Instance==== SELECT @@SERVERNAME; EXEC sp_dropserver 'OldServerName'; GO EXEC sp_addserver 'NewServerName', 'local'; GO -- SQL-Server-Dienst neu starten ====Named Instance==== SELECT @@SERVERNAME; EXEC sp_dropserver 'OldServerName\InstanceName'; GO EXEC sp_addserver 'NewServerName\InstanceName', 'local'; GO -- SQL-Server-Dienst neu starten =====Auth===== Teste ob [[Kerberos]] oder [[NTLM]] benutzt wird. SELECT auth_scheme FROM sys.dm_exec_connections WHERE session_id = @@SPID; Gruppenmitgliedschaften & explizite DENY prüfen Wenn der Zugriff über eine AD-Gruppe kommen soll: Ist der User in der Gruppe? Ist die Gruppe als Login vorhanden und in der DB berechtigt? Prüfe auch, ob irgendwo „DENY CONNECT SQL“ gesetzt wurde: SELECT sp.name, sp.type_desc, perm.state_desc, perm.permission_name FROM sys.server_permissions perm JOIN sys.server_principals sp ON perm.grantee_principal_id = sp.principal_id WHERE sp.name IN (N'DOMÄNE\serviceuser', N'DOMÄNE\DeineGruppe'); =====Code===== #include #include #include #include #include static void check(SQLRETURN rc, SQLHANDLE handle, SQLSMALLINT type, const char* msg) { if (rc == SQL_SUCCESS || rc == SQL_SUCCESS_WITH_INFO) return; SQLCHAR state[6]{}; SQLINTEGER nativeErr = 0; SQLCHAR text[256]{}; SQLSMALLINT len = 0; if (SQLGetDiagRecA(type, handle, 1, state, &nativeErr, text, sizeof(text), &len) == SQL_SUCCESS) { std::cerr << msg << " | SQLSTATE=" << state << " native=" << nativeErr << " text=" << text << "\n"; } else { std::cerr << msg << " | (no diagnostics)\n"; } std::exit(1); } int main() { SQLHENV env = SQL_NULL_HENV; SQLHDBC dbc = SQL_NULL_HDBC; SQLHSTMT stmt = SQL_NULL_HSTMT; // 1) Environment check(SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &env), env, SQL_HANDLE_ENV, "Alloc ENV"); check(SQLSetEnvAttr(env, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, 0), env, SQL_HANDLE_ENV, "Set ODBC version"); // 2) Connection check(SQLAllocHandle(SQL_HANDLE_DBC, env, &dbc), dbc, SQL_HANDLE_DBC, "Alloc DBC"); // Beispiel: SQL Login (User/Pass). Für Windows Integrated Security siehe unten. std::string conn = //"Driver={ODBC Driver 18 for SQL Server};" "Driver={SQL Server};" //"Server=tcp:VIE-CLU-SQL04\\SEMACORE,1433;" "Server=VIE-CLU-SQL04\\SEMACORE;" "Database=AUDIT_DATA;" "Uid=admin;" "Pwd=W@s1dochnet!;" //"Encrypt=yes;" "TrustServerCertificate=yes;"; // in Produktion eher "no" + korrektes Zertifikat SQLCHAR outConn[1024]; SQLSMALLINT outLen = 0; check(SQLDriverConnectA(dbc, NULL, (SQLCHAR*)conn.c_str(), SQL_NTS, outConn, sizeof(outConn), &outLen, SQL_DRIVER_COMPLETE), dbc, SQL_HANDLE_DBC, "Connect"); // 3) Query check(SQLAllocHandle(SQL_HANDLE_STMT, dbc, &stmt), stmt, SQL_HANDLE_STMT, "Alloc STMT"); const char* sql = "SELECT TOP (5) name FROM sys.databases ORDER BY name"; check(SQLExecDirectA(stmt, (SQLCHAR*)sql, SQL_NTS), stmt, SQL_HANDLE_STMT, "Exec"); // 4) Results lesen (1. und 3. Spalte als Text) char id[256]; SQLLEN idInd = 0; char name[256]; SQLLEN nameInd = 0; check(SQLBindCol(stmt, 3, SQL_C_CHAR, name, sizeof(name), &nameInd), stmt, SQL_HANDLE_STMT, "BindCol"); check(SQLBindCol(stmt, 1, SQL_C_CHAR, id, sizeof(id), &idInd), stmt, SQL_HANDLE_STMT, "BindCol"); while (SQLFetch(stmt) == SQL_SUCCESS) { std::cout << id << " == " << name << "\n"; } // 5) Cleanup SQLFreeHandle(SQL_HANDLE_STMT, stmt); SQLDisconnect(dbc); SQLFreeHandle(SQL_HANDLE_DBC, dbc); SQLFreeHandle(SQL_HANDLE_ENV, env); } g++ -static-libgcc -static-libstdc++ -std=c++17 -O2 -Wall main.cpp -o mssql.exe -lodbc32 =====Downloads===== * [[https://www.microsoft.com/en-us/evalcenter/download-sql-server-2016|Windows SQL Server 2016]] * [[https://www.microsoft.com/en-us/evalcenter/download-sql-server-2019|Windows SQL Server 2019]] * [[https://www.microsoft.com/en-us/evalcenter/download-sql-server-2022|Windows SQL Server 2022]] * [[https://download.microsoft.com/download/9/0/7/907AD35F-9F9C-43A5-9789-52470555DB90/ENU/SQLEXPR_x64_ENU.exe|Express Core]] * [[https://download.microsoft.com/download/9/0/7/907AD35F-9F9C-43A5-9789-52470555DB90/ENU/SQLEXPRADV_x64_ENU.exe|Express Advanced]]