Schlagwort-Archive: MSSQL

MSSQL Unterstützung für Apache / PHP 5.3 unter Windows

Ich schreibe gerade mal wieder ein paar kleine Tools in PHP und wollte nun als Backend MSSQL verwenden. Per Default ist diese Erweiterung bei den meisten Installation (z. B. auch bei XAMPP) deaktiviert. Ein einfaches Einkommentieren der Extension php_mssql.dll führt leider nicht mehr zum Ziel. Die entsprechende DLL wird nicht mehr gepflegt und befindet sich auch nicht mehr im ext-Verzeichnis:

image_thumb-9341708

Die Lösung des Problems findet man mit dem “Microsoft Driver 3.0 for SQL Server for PHP” (derzeit Version 3).

Bei der Frage nach dem Installationsverzeichnis sollte man das “ext” Verzeichnis seiner PHP Installation auswählen:

image_thumb1-7063705

Für den Zugriff auf einen MSSQL server ist neben den soeben installierten DLL’s auch noch die Installation des “MSSQL Server Native Client” notwendig. Diesen kann man ebenfalls von Microsoft kostenlos von dieser Seite downloaden. Der Link für den Download findet man im unteren Drittel der Seite.

Zum Abschluss der Konfiguration trägt man die neuen DLL’s in die php.ini ein:

image_thumb2-3647869

Nach einem Neustart des Apache sollte PHP auch MSSQL Datenbanken unterstützen:

image_thumb3-6810267

SQL Server “A network-related or instance-specific error occurred”

Nach der Installation eines SQL Servers (in meinem Fall 2008 R2 auf einem Windows 2008 R2 x64 Server) erhält man beim Versuch einen Remoteverbindung über das SQL Server Management Studio herzustellen in der Regel folgende Fehlermeldung:

A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: Named Pipes Provider, error: 40 – Could not open a connection to SQL Server) (Microsoft SQL Server, Error: 5)

Der Grund dafür ist recht simpel. Die Windows Firewall blockt den Port für den SQL Server (1433). Leider sieht die Installation noch immer nicht vor den Port im Laufe der Installation öffnen zu lassen. Man kann sich nun entweder durch die Windows Firewall GUI klicken oder einfach folgenden Befehl in einer CMD Box (muss als Admin ausgeführt werden!) eingeben:

netsh firewall set portopening protocol = TCP port = 1433 name = SQLPort mode = ENABLE scope = SUBNET profile = CURRENT

image_thumb4-5245991

Thats it. Der nächste Verbindungsversuch führt zum Erfolg :-).

MS SQL 2008 (R2) Export in eine normale Datei mit Create und insert statements

Nachdem der Microsoft SQL Database Publishing Wizard für SQL Server 2008 (R2) Systeme nicht mehr verfügbar ist um die Datenbank und deren Inhalt in eine Datei mit SQL Statements zu transferieren (siehe alter Beitrag), war ich heute auf der Suche nach einem neuen Weg. Fündig wurde ich dabei direkt im Microsoft SQL Server Management Studio (ein sehr guter Platz dafür :-). Die notwendigen Schritte sind dabei recht einfach:

1. Rechtsklick auf die zu exportierende Datenbank –> Tasks –> Generate Scripts…

image_thumb-9757830

2. Auswahl der zu exportierenden Elemente (in meiner DB gibt es derzeit nur Tables und Stored Procedures – daher stehen bei mir auch nur diese beiden Elemente zu Auswahl).

image_thumb1-1324335

3. Setzen der Ouput Options. Da ich wenige Daten habe, lasse ich die Ausgabe direkt in ein query window schreiben.

Wichtig noch nicht Next klicken.

image_thumb2-1543822

4. Auswahl von Advanced und hier bei “Types of data to script” die Option Schema and data auswählen. (Das ist nicht default!!). In dieser Ansicht kann man auch noch weitere Dinge setzen die ganz nützlich sind. Ich setzte z. B. gerne noch die Optionen Script DROP and CREATE und Script USE DATABASE.

image_thumb3-4335915

Thats it. Noch zwei mal Next klicken und schön öffnet sich ein neues Fensterchen mit den SQL Commands.

MSSQL String in RTF wandeln

… und noch eine SQL Funktion aus meiner Sammlung. Diese Funktion ermöglicht das Umwandeln eines normalen Strings in ein RTF „Objekt“ direkt auf der Datenbank.

-- Diese SQL Query erstellt eine neue Funktion mit dem Namen string2rtf. Die Funktion hat zur Aufgabe einen übergebenen String
-- in ein RTF Objekt umzuwandeln.
-- @param String enthält den Rohstring
-- @return rtfstring enthält den string plus die rtf Erweiterungen

if exists (select * from information_schema.routines where routine_name = N'string2rtf' and routine_type = 'function') drop function [dbo].[string2rtf]
GO
CREATE FUNCTION dbo.string2rtf(@string varchar(8000))
returns varchar(8000)
AS
BEGIN

DECLARE @praefix varchar(200)
DECLARE @suffix varchar(200)
DECLARE @rtfstring varchar(8000)

SET @praefix = '{\rtf1\ansi\ansicpg1252\deff0\deflang1033{\fonttbl{\f0\fnil\fcharset0 Microsoft Sans Serif;}}\viewkind4\uc1\pard\f0\fs17 '
SET @suffix = '\par}'
SET @rtfstring = NULL

SET @rtfstring = @praefix + @string + @suffix;
SET @rtfstring = REPLACE(@rtfstring,CHAR(9),'\tab ');
SET @rtfstring = REPLACE(@rtfstring,CHAR(13) + CHAR(10),'\par ');
SET @rtfstring = REPLACE(@rtfstring,CHAR(13),'\par ');
SET @rtfstring = REPLACE(@rtfstring,CHAR(10),'\par ');
SET @rtfstring = REPLACE(@rtfstring,'ä','\''e4');
SET @rtfstring = REPLACE(@rtfstring,'Ä','\''c4');
SET @rtfstring = REPLACE(@rtfstring,'ü','\''fc');
SET @rtfstring = REPLACE(@rtfstring,'Ü','\''dc');
SET @rtfstring = REPLACE(@rtfstring,'ö','\''f6');
SET @rtfstring = REPLACE(@rtfstring,'Ö','\''d6');
SET @rtfstring = REPLACE(@rtfstring,'ß','ss');
SET @rtfstring = REPLACE(@rtfstring,'€','\''80');

return @rtfstring
end

MSSQL Export in eine normale Datei mit create und insert statements

… was für ein Tag. Mein Plan war es heute mal schnell eine bestehende Datenbank in eine andere Datenbank zu kopieren. Von den Datenbanksystemen mit denen ich bis jetzt gearbeitet habe (MySQL und Oracle) her war ich es gewohnt, dies mit wenigen Schritten erledigen zu können.

Nicht so bei MSSQL – weder die Management Konsole für jeden (SSMSE) noch der große Bruder (SSMS) bieten eine vernüftige Funktion um die Daten einfach in ein lesbares Format zu exportieren.

Nach etwas suchen bin ich dann auf ein weiters Tool von Microsoft aufmerksam gemacht worden. Der Microsoft SQL Server Database Publishing Wizard bietet genau die von mir gewünschte Funktionalität und ist kinderleicht zu bedienen.