SembaluBlog für Wichtige Tips, Hinweise, Informationen um Produkte, Schulungscenter und Seminare
Montag, 20. November 2017
Mittwoch, 8. November 2017
CASE Anweisungen und INLINE IF in T-SQL
Der folgende Beispielcode zeigt wie in SQL die CASE Anweisung eingesetzt werden kann und ebenfalls die Inline IF Anweisung in Statements verwendet wird.
-- START BEISPIELCODE --
-- es wird eine Tabelle KUnden mit Demodatensätzen in der Datenbank angelegt
create table kunden (kunden_nr int,
nachname nvarchar(100), vorname nvarchar(100),kategorie int);
insert into kunden (kunden_nr,nachname,vorname,kategorie) values(1,'Müller','Anne',33);
insert into kunden (kunden_nr,nachname,vorname,kategorie) values(2,'Franke','Mike',34);
insert into kunden (kunden_nr,nachname,vorname,kategorie) values(3,'Fredericks','Hanna',35);
insert into kunden (kunden_nr,nachname,vorname,kategorie) values(4,'Mastroiani','Sarah',34);
insert into kunden (kunden_nr,nachname,vorname,kategorie) values(5,'Scarlatti','Vincenzo',73);
select kunden_nr,nachname,vorname,
case
when kategorie = 33 then 'Guter Kunde'
when kategorie = 34 then 'Sehr guter Kunde'
when kategorie = 35 then 'Guter Kunde'
else 'normaler Kunde'
end as kategorie
from kunden
-- ODER SO
select kunden_nr,nachname,vorname,
case kategorie
when 33 then 'Guter Kunde'
when 34 then 'Sehr guter Kunde'
when 35 then 'Guter Kunde'
else 'normaler Kunde'
end as kategorie
from kunden
-- case in der ORDER BY Klausel
select * from kunden order by case when kategorie = 33 then 1
when kategorie = 35 then 2
ELSE 3
end
-- INLINEIF -> IIF
-- IIF
SELECT vorname,nachname,IIF(kategorie = 34,'Top','Not Top') AS TOPORNOT from kunden
-- END BEISPIELCODE --
Dienstag, 7. November 2017
Inner Join, Left Outer Join, Right Outer Join in 5 Minuten erklärt
Hier der Beispielcode zum Youtubevideo https://youtu.be/CaWOzl0Y_vE
-- START BEISPIELCODE --
-- definition eindeutiger wert
create table kunden (kunden_nr int,
nachname nvarchar(100), vorname nvarchar(100));
insert into kunden (kunden_nr,nachname,vorname) values(1,'Müller','Anne');
insert into kunden (kunden_nr,nachname,vorname) values(2,'Franke','Mike');
insert into kunden (kunden_nr,nachname,vorname) values(3,'Fredericks','Hanna');
create table bestellungen
(kunden_nr integer,
bestelldatum datetime,
artikelnr nvarchar(100),
anzahl int)
-- müller anne 2 Bestellungen
insert into bestellungen(kunden_nr,bestelldatum,artikelnr,anzahl) values(1,GETDATE(),'Artikel 1',44);
insert into bestellungen (kunden_nr,bestelldatum,artikelnr,anzahl) values(1,GETDATE(),'Artikel 2',17);
insert into bestellungen (kunden_nr,bestelldatum,artikelnr,anzahl) values(2,GETDATE(),'Artikel 7',32);
insert into bestellungen (kunden_nr,bestelldatum,artikelnr,anzahl) values(2,GETDATE(),'Artikel 2',42);
insert into bestellungen (kunden_nr,bestelldatum,artikelnr,anzahl) values(2,GETDATE(),'Artikel 9',4);
select * from kunden;
select * from bestellungen;
-- DER INNER JOIN
-- ZEIGE DIE KUNDEN AN, DIE IN DER TABELLE BESTELLUNGEN MINDESTENS EINE BESTELLUNG HABEN
SELECT kunden.nachname, kunden.kunden_nr, kunden.vorname, bestellungen.artikelnr, bestellungen.anzahl
FROM kunden INNER JOIN bestellungen
ON kunden.kunden_nr = bestellungen.kunden_nr
-- DER LEFT OUTER JOIN
-- ZEIGE ALLE KUNDEN MIT IHREN BESTELLUNGEN AN, EGAL OB SIE IN BESTELLUNGEN HABEN ODER NICHT
SELECT kunden.nachname, kunden.kunden_nr, kunden.vorname, bestellungen.artikelnr, bestellungen.anzahl
FROM kunden LEFT OUTER JOIN bestellungen
ON kunden.kunden_nr = bestellungen.kunden_nr
-- DER RIGHT OUTER JOIN
SELECT kunden.nachname, kunden.kunden_nr, kunden.vorname, bestellungen.artikelnr, bestellungen.anzahl
FROM bestellungen RIGHT OUTER JOIN kunden
ON kunden.kunden_nr = bestellungen.kunden_nr
-- END BEISPIELCODE --
Inner Join, Left Outer Join, Right Outer Join in 5 Minuten erklärt
-- START BEISPIELCODE --
-- definition eindeutiger wert
create table kunden (kunden_nr int,
nachname nvarchar(100), vorname nvarchar(100));
insert into kunden (kunden_nr,nachname,vorname) values(1,'Müller','Anne');
insert into kunden (kunden_nr,nachname,vorname) values(2,'Franke','Mike');
insert into kunden (kunden_nr,nachname,vorname) values(3,'Fredericks','Hanna');
create table bestellungen
(kunden_nr integer,
bestelldatum datetime,
artikelnr nvarchar(100),
anzahl int)
-- müller anne 2 Bestellungen
insert into bestellungen(kunden_nr,bestelldatum,artikelnr,anzahl) values(1,GETDATE(),'Artikel 1',44);
insert into bestellungen (kunden_nr,bestelldatum,artikelnr,anzahl) values(1,GETDATE(),'Artikel 2',17);
insert into bestellungen (kunden_nr,bestelldatum,artikelnr,anzahl) values(2,GETDATE(),'Artikel 7',32);
insert into bestellungen (kunden_nr,bestelldatum,artikelnr,anzahl) values(2,GETDATE(),'Artikel 2',42);
insert into bestellungen (kunden_nr,bestelldatum,artikelnr,anzahl) values(2,GETDATE(),'Artikel 9',4);
select * from kunden;
select * from bestellungen;
-- DER INNER JOIN
-- ZEIGE DIE KUNDEN AN, DIE IN DER TABELLE BESTELLUNGEN MINDESTENS EINE BESTELLUNG HABEN
SELECT kunden.nachname, kunden.kunden_nr, kunden.vorname, bestellungen.artikelnr, bestellungen.anzahl
FROM kunden INNER JOIN bestellungen
ON kunden.kunden_nr = bestellungen.kunden_nr
-- DER LEFT OUTER JOIN
-- ZEIGE ALLE KUNDEN MIT IHREN BESTELLUNGEN AN, EGAL OB SIE IN BESTELLUNGEN HABEN ODER NICHT
SELECT kunden.nachname, kunden.kunden_nr, kunden.vorname, bestellungen.artikelnr, bestellungen.anzahl
FROM kunden LEFT OUTER JOIN bestellungen
ON kunden.kunden_nr = bestellungen.kunden_nr
-- DER RIGHT OUTER JOIN
SELECT kunden.nachname, kunden.kunden_nr, kunden.vorname, bestellungen.artikelnr, bestellungen.anzahl
FROM bestellungen RIGHT OUTER JOIN kunden
ON kunden.kunden_nr = bestellungen.kunden_nr
-- END BEISPIELCODE --
Montag, 6. November 2017
Verwenden des APPLY Operators - CROSS und OUTER APPLY in T-SQL
Der Apply Operator ermöglicht es eine Tabelle und eine Tabellenwertfunktion miteinander zu verknüpfen. Ähnlich einem JOIN.
Beispiel:
SELECT * FROM Mitarbeiter m
CROSS APPLY dbo.GibGehaltZurueck(m.Gehaltsklasse)
Mittels CROSS Apply können Spaltenwerte der Tabelle zur linken an die parameterisierte Tabellenwertfunktion auf der rechten Seite vergeben übergeben werden.
Aber sehen wir uns das folgende Beispiel an:
-- Anlegen der Beispieltabellen Mitarbeiter und Gehalt sowie der Tabellenfunktion (gibt eine -- Tabelle zurück) GibGehaltZurueck
-- START TABELLEN U. FUNKTION ERZEUGEN HIER
USE [tempdb]
GO
IF EXISTS (SELECT * FROM sys.objects WHERE OBJECT_ID = OBJECT_ID(N'[Gehalt]') AND type IN (N'U'))
BEGIN
DROP TABLE [Gehalt]
END
CREATE TABLE [Gehalt](
[Gehaltsklasse] nvarchar(100) NOT NULL PRIMARY KEY,
[Gehalt] money NOT NULL,
)
insert into Gehalt (Gehaltsklasse,Gehalt) values('A',2700),('B',7400),('C',2590),('D', 4500);
IF EXISTS (SELECT * FROM sys.objects WHERE OBJECT_ID = OBJECT_ID(N'[Mitarbeiter]') AND type IN (N'U'))
BEGIN
DROP TABLE [Mitarbeiter]
END
GO
CREATE TABLE [Mitarbeiter](
[Mitarbeiter_id] [int] NOT NULL PRIMARY KEY,
[Vorname] nvarchar(100) NOT NULL,
[Nachname] nvarchar(100) NOT NULL,
[Gehaltsklasse] nvarchar(100) NOT NULL ,
) ON [PRIMARY]
GO
insert into mitarbeiter (Mitarbeiter_id,vorname,nachname,gehaltsklasse) values
(1,'Hanna','Fredericks','A'),(2,'Mike','Franke','B'),(3,'Achim','Gregorios','A'),(4,'Holger','Jolandos','Y'),
(5,'Richie','Retorius','X'),(6,'Anna','Kastner','A'),(7,'Katrin','Lemmes','C'),(8,'Michael','Maier','C')
-- anlegen einer tabellenwertfunktion
IF EXISTS (SELECT * FROM sys.objects WHERE OBJECT_ID = OBJECT_ID(N'[GibGehaltZurueck]') AND type IN (N'IF'))
BEGIN
DROP FUNCTION dbo.GibGehaltZurueck
END
GO
CREATE FUNCTION dbo.GibGehaltZurueck(@gehaltsklasse AS nvarchar(100))
RETURNS TABLE
AS
RETURN
(
SELECT * FROM gehalt where gehaltsklasse = @gehaltsklasse
)
GO
-- END TABELLEN U. FUNKTION ERZEUGEN HIER
Im folgenden werden die Tabellen aufgelistet um die Inhalte zu verstehen. Die Tabelle Mitarbeiter enthält die jeweiligen Mitarbeiter mit einer Mitarbeiterid, Vornamen und Nachnamen sowie einer zugeordneten Gehaltsklasse. In der Tabelle Gehalt, befinden sich die Datensätze, die das Gehalt das der jeweiligen Gehaltsklasse zugeordnet ist repräsentieren. Also alle Mitarbeiter der Gehaltsklasse A haben demnach ein Gehalt von 2700,--.
Die Tabellenwertfunktion GibGehaltZurueck ermittelt den Gehaltsbetrag entsprechend der im Parameter der Funktion übergebenen Gehaltsklasse.
-- START Auflistung der Tabellen u. Einsatz der Funktion GibGehaltZurueck
select * from Mitarbeiter
select * from Gehalt
select * from dbo.GibGehaltZurueck('A')
-- END Auflistung der Tabellen u. Einsatz der Funktion GibGehaltZurueck
Um das Gehalt eines Mitarbeiters festzustellen bedarf es keiner Funktion da eine normale Verjoinung der Tabellen Mitarbeiter und Gehalt über die Spalte Gehaltsklasse ausreichen würde.
-- START ein normaler Join ermittelt ohne weiteres das der Gehaltsklasse zugeordnete Gehalt
select vorname,nachname,gehalt.Gehaltsklasse, Gehalt
from mitarbeiter inner join gehalt
on (mitarbeiter.Gehaltsklasse = gehalt.Gehaltsklasse)
select vorname,nachname,gehalt.Gehaltsklasse, Gehalt
from mitarbeiter left outer join gehalt
on (mitarbeiter.Gehaltsklasse = gehalt.Gehaltsklasse)
-- END ein normaler Join ermittelt ohne weiteres das der Gehaltsklasse zugeordnete Gehalt
Was aber wenn eine Tabelle auf der linken Seite mit einer Funktion auf der rechten Seite verknüpft werden soll oder der Funktion Parameterwerte aus einer Spalte der Linken Tabelle übergeben werden sollen.
Beispiel1:
-- eine Funktion kann auch auf der einen Seite der Join Verknüpfung stehen ABER !!! ...
select vorname,nachname,gehalt.Gehaltsklasse, Gehalt
from mitarbeiter m inner join dbo.GibGehaltZurueck('A')
gehalt on (1=1)
ABER!!!
Beispiel2:
-- es kann dem Parameter der Funktion kein Spaltenwert (gehaltsklasse)
-- aus der Tabelle der linken Seite der Join Verbindung übergeben werden. FEHLER!!!
-- dieses Beispiel führt zu einem Fehler
SELECT * FROM Mitarbeiter m
inner join dbo.GibGehaltZurueck(m.gehaltsklasse) on 1=1
GO
DAZU WIRD CROSS APPLY oder OUTER APPLY BENÖTIGT!!!
CROSS APPLYIm folgenden Statement wird von jedem Mitarbeiterdatensatz der linken Tabelle Mitarbeiter, der Spaltenwert Gehaltsklasse mittels m.Gehaltsklasse an den Funktionsparameter der Funktion GibGehaltZurueck auf der rechten Seite übergeben.
Liefert die Funktion gefundene Datensätze zurück werden die Mitarbeiterdatensätze inkl. der durch die Funktion zurückgegebenen Datensätze ausgegeben. Liefert die Funktion keine Datensätze entsprechend dem übergebenen Parameterwert zurück werden keine Datensätze auch nicht der Datensatz des Mitarbeiters aus der Tabelle Mitarbeiter zurückgegeben. Ähnlich wie INNER JOIN bei Verjoinung von zwei Tabellen.
OUTER APPLY
Zeigt auf jeden Fall die Datensätze der Linken Seite also die Datensätze der Tabelle Mitarbeiter an. Auch wenn die Funktion auf Grund der übergebenen Gehaltsklasse m.Gehaltsklasse keine Daten zurückliefert. Ähnlich wie LEFT OUTER JOIN bei Verjoinung von zwei Tabellen.
-- Funktioniert
SELECT * FROM Mitarbeiter m
CROSS APPLY dbo.GibGehaltZurueck(m.Gehaltsklasse)
-- Funktioniert
SELECT * FROM Mitarbeiter m
OUTER APPLY dbo.GibGehaltZurueck(m.Gehaltsklasse)
-- ENDE--
Hier der Link zum Youtube Video https://youtu.be/5VE_j6sT4EM
Samstag, 4. November 2017
Starten von SQL Server Setup - This SQL Server media does not Support the language of the OS-
Beim Versuch SQL Server Setup zu starten erhalten Sie folgenden Fehler:
-This SQL Server media does not Support the language of the OS-
Dies bedeutet soviel wie, dass SQL Server mit den Regionalen Spracheinstellungen Ihres Betriebssystems nicht klar kommt und dies nicht unterstützt.
In unserem Fall hier verwenden wir das Windows Server 2016 Betriebssystem auf dem SQL Server installiert werden soll. Das SQL Server Setup selbst ist allerdings in der Sprache -Deutsch-.
Das ist das Problem, welces die folgende Fehlermeldung erzeugt.
-This SQL Server media does not Support the language of the OS- erscheint, Setup bricht ab.
Abbildung 2
-This SQL Server media does not Support the language of the OS-
Dies bedeutet soviel wie, dass SQL Server mit den Regionalen Spracheinstellungen Ihres Betriebssystems nicht klar kommt und dies nicht unterstützt.
In unserem Fall hier verwenden wir das Windows Server 2016 Betriebssystem auf dem SQL Server installiert werden soll. Das SQL Server Setup selbst ist allerdings in der Sprache -Deutsch-.
Das ist das Problem, welces die folgende Fehlermeldung erzeugt.
Abbildung 1
Abbildung 2
Um das Problem zu lösen Starten sie die Systemsteuerung und klicken Sie auf den Link -Region-
Anschließend wählen Sie aus der Listbox die Sprache aus, die auch dem SQL Server Setup selbst zugeordnet ist. In diesem Fall hier war das Serverbetriebssystem in -Englisch- und das SQL Server Setup n -Deutsch-. Demzufolge muss in der Listbox unter Format German (Germany) ausgewählt werden und Ok geklickt werden.
Abbildung 3
Anschließend startet SQL Server Setup problemlos.
Donnerstag, 19. Oktober 2017
SharePoint App Unterstützung einrichten.
SharePoint App Unterstützung einrichten.
Zum Original Youtube unterstützungsvideo geht's hier:
https://youtu.be/vGe3Iw_wC4c
Leider sind Apps oder SharePoint Addins nicht per Standard in SharePoint aktiviert.
Folgende Vorgehensweise ist nötig.
Zuerst muss überprüft werden, ob in der SharePoint Farm die jeweiligen Dienste laufen.
Hierzu starten Sie die Zentraladministration und wählen folgenden Menüpunkt aus:
Systemeinstellungen->Dienste auf dem Server verwalten
System Settings->Manage Services on Server
(english)
App Management Service
Microsoft SharePoint Foundation Subscription Settings Service
(deutsch)
App-Verwaltungsdienst
Microsoft SharePoint Foundation-Abonnementeinstellungendienst
Beide Dienste müssen gestartet sein.
Both Services must be started.
Anschließend werden für beide Services die Dienstinstanzen inkl. der zugehörigen Proxys eingerichtet.
Es wird dringenst empfohlen dies per Powershell durchzuführen, da die Implementierung über die grafische Oberfläche unzureichend ist und nicht zum Ziel führt.
Hierzu starten Sie die Verwaltungsshell in der SharePoint Windows Gruppe im Start Menü (SharePoint 2016 Management Shell)
Hier die POWERSHELL Skripte um beide Dienstinstanzen einzurichten:
#Microsoft SharePoint Foundation-Abonnementeinstellungendienst
$account = Get-SPManagedAccount "virtualxpert\sp_admin"
$appPoolSubSvc = New-SPServiceApplicationPool -Name SettingsServiceAppPool -Account $account
$appSubSvc = New-SPSubscriptionSettingsServiceApplication -ApplicationPool $appPoolSubSvc -Name SettingsServiceApp -DatabaseName dbapp1
# APP VERWALTUNGSDIENST
$account = Get-SPManagedAccount "virtualxpert\sp_service"
$appPoolAppSvc = New-SPServiceApplicationPool -Name AppServiceAppPool -Account $account
$appAppSvc = New-SPAppManagementServiceApplication -ApplicationPool $appPoolAppSvc -Name AppServiceApp -DatabaseName AppServicedb1
$proxyAppSvc = New-SPAppManagementServiceApplicationProxy -ServiceApplication $appAppSvc
# Creates a proxy for the Application Management service application.
Nachdem beide Skripte fehlerfrei gelaufen sind benötigen Sie im DNS Service einen CNAME Eintrag unter dem die Apps aufgerufen werden können.
Hierzu gehen Sie in die DNS Server Verwaltungskonsole und klicken mit der rechten Maustaste auf die Zone.
In unserem Beispiel virtualxpert.com
Im Kontextmenü wählen Sie -New Alias (CNAME)... aus:
Im Feld -Alias Name- geben Sie einen * ein.
Im Feld -Voll qualifizierter Domain name - wählen Sie über die Suchen Schaltfläche die FQDN aus und weisen diese zu.
Bestätigen Sie dies mit Ok.
Anschließend überprüfen Sie die Einstellungen mittels ping Befehl.
1. Klicken Sie in der Zentraladministration auf Apps
2. Wählen Sie dann Configure App Url's
3. Im Feld -App Domain- geben Sie Ihre Domain an (in unserem Beispiel virtualxpert.com)
4. Im Feld -App Prefix- geben Sie ein Kürzel (Prefix) an welches Ihrer App Url automatisch hinzugefügt wird.
In der Zentraladministration gehen Sie auf -Manage App Catalog-
Hier legen Sie unter einer Url einfach einen App Catalog an.
Im Prinzip ist dies eine SharePoint Website die sämtliche App's die Sie im Unternehmen zur Verfügung stellen möchten gespeichert hat.
Zum Original Youtube unterstützungsvideo geht's hier:
https://youtu.be/vGe3Iw_wC4c
Leider sind Apps oder SharePoint Addins nicht per Standard in SharePoint aktiviert.
Folgende Vorgehensweise ist nötig.
Zuerst muss überprüft werden, ob in der SharePoint Farm die jeweiligen Dienste laufen.
Hierzu starten Sie die Zentraladministration und wählen folgenden Menüpunkt aus:
Systemeinstellungen->Dienste auf dem Server verwalten
System Settings->Manage Services on Server
(english)
App Management Service
Microsoft SharePoint Foundation Subscription Settings Service
(deutsch)
App-Verwaltungsdienst
Microsoft SharePoint Foundation-Abonnementeinstellungendienst
Beide Dienste müssen gestartet sein.
Both Services must be started.
Anschließend werden für beide Services die Dienstinstanzen inkl. der zugehörigen Proxys eingerichtet.
Es wird dringenst empfohlen dies per Powershell durchzuführen, da die Implementierung über die grafische Oberfläche unzureichend ist und nicht zum Ziel führt.
Hierzu starten Sie die Verwaltungsshell in der SharePoint Windows Gruppe im Start Menü (SharePoint 2016 Management Shell)
Hier die POWERSHELL Skripte um beide Dienstinstanzen einzurichten:
#Microsoft SharePoint Foundation-Abonnementeinstellungendienst
$account = Get-SPManagedAccount "virtualxpert\sp_admin"
$appPoolSubSvc = New-SPServiceApplicationPool -Name SettingsServiceAppPool -Account $account
$appSubSvc = New-SPSubscriptionSettingsServiceApplication -ApplicationPool $appPoolSubSvc -Name SettingsServiceApp -DatabaseName dbapp1
$proxySubSvc = New-SPSubscriptionSettingsServiceApplicationProxy -ServiceApplication $appSubSvc
# APP VERWALTUNGSDIENST
$account = Get-SPManagedAccount "virtualxpert\sp_service"
$appPoolAppSvc = New-SPServiceApplicationPool -Name AppServiceAppPool -Account $account
$appAppSvc = New-SPAppManagementServiceApplication -ApplicationPool $appPoolAppSvc -Name AppServiceApp -DatabaseName AppServicedb1
$proxyAppSvc = New-SPAppManagementServiceApplicationProxy -ServiceApplication $appAppSvc
# Creates a proxy for the Application Management service application.
DNS Einstellungen
Nachdem beide Skripte fehlerfrei gelaufen sind benötigen Sie im DNS Service einen CNAME Eintrag unter dem die Apps aufgerufen werden können.
Hierzu gehen Sie in die DNS Server Verwaltungskonsole und klicken mit der rechten Maustaste auf die Zone.
In unserem Beispiel virtualxpert.com
Im Kontextmenü wählen Sie -New Alias (CNAME)... aus:
Im Feld -Alias Name- geben Sie einen * ein.
Im Feld -Voll qualifizierter Domain name - wählen Sie über die Suchen Schaltfläche die FQDN aus und weisen diese zu.
Bestätigen Sie dies mit Ok.
Anschließend überprüfen Sie die Einstellungen mittels ping Befehl.
Einstellungen in der Zentraladministration
1. Klicken Sie in der Zentraladministration auf Apps
2. Wählen Sie dann Configure App Url's
3. Im Feld -App Domain- geben Sie Ihre Domain an (in unserem Beispiel virtualxpert.com)
4. Im Feld -App Prefix- geben Sie ein Kürzel (Prefix) an welches Ihrer App Url automatisch hinzugefügt wird.
AppStore einrichten
Anschließend müssen Sie einen App Catalog einrchten in dem Ihre Apps abgelegt werden können damit User diese hinzufügen können.In der Zentraladministration gehen Sie auf -Manage App Catalog-
Hier legen Sie unter einer Url einfach einen App Catalog an.
Im Prinzip ist dies eine SharePoint Website die sämtliche App's die Sie im Unternehmen zur Verfügung stellen möchten gespeichert hat.
Sonntag, 15. Oktober 2017
MinRole Konzept SharePoint 2016
In diesem Artikel finden Sie nützliche Links, die Ihnen das MinRole Konzept von Microsoft erklären
https://technet.microsoft.com/de-de/library/mt346114(v=office.16).aspx
https://technet.microsoft.com/de-de/library/mt743704(v=office.16).aspx
https://technet.microsoft.com/de-de/library/mt346114(v=office.16).aspx
https://technet.microsoft.com/de-de/library/mt743704(v=office.16).aspx
Abonnieren
Kommentare (Atom)
-
Wenn Sie sich auf eine Microsoft Zertifizierungsprüfung optimal vorbereiten wollen, so sollten Sie einen MOC (Microsoft Official Curiculum) ...
-
Beim Versuch SQL Server Setup zu starten erhalten Sie folgenden Fehler: -This SQL Server media does not Support the language of the OS- ...



