-
ACHTUNG - NEUES BLOG
Ab sofort steht unter http://devtyr.norberteder.com mein neues Blog zur Verfügung. Dieses Blog wird nicht weiter betreut, bleibt aber erhalten. Neue Eintr%auml;ge erfolgen nur mehr im neuen Blog. Kommentare werden ebenfalls nicht mehr behandelt. Wer weiterhin meinen Einträgen und Aktivitäten folgen möchte, möge bitte RSS-Feeds, Verlinkungen etc. an die neue Location anpassen.
|
.NET BlogBook Ausgabe 3 veröffentlicht
14.07.07 - .NET, Grundlagen, Base Framework, ASP.NET, Visual Studio, Allerlei, SQL Server, Internet, Community Beitrag von Norbert Eder| | Soeben wurde das .NET BlogBook in der Version 3 (oder auch Ausgabe genannt) veröffentlicht. In dieser Ausgabe wurden zahlreiche Unstimmigkeiten und Fehler bereinigt, als auch die Lesbarkeit weiter erhöht. Durch zahlreiche Rückmeldungen von Lesern konnten wir sie weiter an die Bedürfnisse der Leser anpassen.
Wir hoffen auch dieses Mal auf eine positive Resonanz und würden uns über konstruktive Kritik und Meinungen freuen.
Zu finden gibt es das Buch auf der .NET BlogBook Projektseite.
| | | 4 Kommentare
- 1014 mal angesehen
| 1 Trackbacks
| Permalink | Trackback-URL |
Neues Microsoft Tool: Microsoft SQL Server Database Publishing Wizard 1.0
30.01.07 - SQL Server Beitrag von Norbert Eder| | Durch den SQL Server-Datenbankveröffentlichungs-Assistent können Datenbanken in T-SQL-Skripts oder direkt an Hostingdienstanbieter veröffentlicht werden.
Der SQL Server Database Publishing Wizard ermöglicht die Bereitstellung von SQL Server-Datenbanken in einer gehosteten Umgebung an einen Server mit SQL Server 2000 oder 2005. Dabei wird eine einzelne SQL-Skriptdatei generiert, die zum Neuerstellen einer Datenbank (sowohl Schema als auch Daten) in einer freigegebenen, gehosteten Umgebung verwendet werden kann, bei der die einzige Konnektivität mit einem Server durch einen webbasierten Steuerungsbereich mit einem Skriptausführungsfenster besteht. Der SQL Server Database Publishing Wizard kann Datenbanken auch direkt auf Server hochladen, die sich beim freigegebenen Hostinganbieter befinden, sofern diese Funktionalität vom Hostingdienstanbieter unterstützt wird.
Der SQL Server Database Publishing Wizard kann optional auch direkt in Visual Studio 2005 und/oder Visual Web Developer 2005 integriert werden. Nach erfolgter Integration können Datenbanken aus der Entwicklungsumgebung heraus auf einfache Weise veröffentlicht werden.
Und hier die Screenshots des Tools, als auch die ersten Ergebnisse:
An dieser Stelle könnte der angesprochene Hostinganbieter eingetragen werden.
Als Zieldatenbank können SQL Server 2000 und SQL Server 2005 ausgewählt werden. Bei den Datentypen können Schema und Daten, Schema bzw. Daten eingestellt werden.
Die Ausgabe dieser Testdatenbank sieht dann folgendermaßen aus:
/****** Object: Table [dbo].[tPerson]
* Script Date: 01/30/2007 11:24:15 ******/
IF EXISTS (SELECT * FROM sys.objects
WHERE object_id = OBJECT_ID(N'[dbo].[tPerson]')
AND type in (N'U'))
DROP TABLE [dbo].[tPerson]
GO
/****** Object: Table [dbo].[tProperty]
* Script Date: 01/30/2007 11:24:15 ******/
IF EXISTS (SELECT * FROM sys.objects
WHERE object_id = OBJECT_ID(N'[dbo].[tProperty]')
AND type in (N'U'))
DROP TABLE [dbo].[tProperty]
GO
/****** Object: Table [dbo].[tPersonAge]
* Script Date: 01/30/2007 11:24:15 ******/
IF EXISTS (SELECT * FROM sys.objects
WHERE object_id = OBJECT_ID(N'[dbo].[tPersonAge]')
AND type in (N'U'))
DROP TABLE [dbo].[tPersonAge]
GO
/****** Object: Table [dbo].[tPersonAge]
* Script Date: 01/30/2007 11:24:15 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects
WHERE object_id = OBJECT_ID(N'[dbo].[tPersonAge]')
AND type in (N'U'))
BEGIN
CREATE TABLE [dbo].[tPersonAge](
[PersonID] [int] NULL,
[Age] [int] NULL,
[Test] [image] NULL
)
END
GO
/****** Object: Table [dbo].[tProperty]
* Script Date: 01/30/2007 11:24:15 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects
WHERE object_id = OBJECT_ID(N'[dbo].[tProperty]')
AND type in (N'U'))
BEGIN
CREATE TABLE [dbo].[tProperty](
[ID] [int] IDENTITY(1,1) NOT NULL,
[Fullname] [nvarchar](255)
COLLATE Latin1_General_CI_AS NULL,
[PropertyName] [nvarchar](50)
COLLATE Latin1_General_CI_AS NULL,
[PropertyValue] [nvarchar](255)
COLLATE Latin1_General_CI_AS NULL,
[Attributes] [nvarchar](1000)
COLLATE Latin1_General_CI_AS NULL,
CONSTRAINT [PK_tProperty] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (IGNORE_DUP_KEY = OFF)
)
END
GO
/****** Object: Table [dbo].[tPerson]
* Script Date: 01/30/2007 11:24:15 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects
WHERE object_id = OBJECT_ID(N'[dbo].[tPerson]')
AND type in (N'U'))
BEGIN
CREATE TABLE [dbo].[tPerson](
[ID] [int] IDENTITY(1,1) NOT NULL,
[Firstname] [nvarchar](50) COLLATE Latin1_General_CI_AS NULL,
[Lastname] [nvarchar](50) COLLATE Latin1_General_CI_AS NULL,
CONSTRAINT [PK_tPerson] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (IGNORE_DUP_KEY = OFF)
)
END
GO
SET IDENTITY_INSERT [dbo].[tPerson] ON
INSERT [dbo].[tPerson] ([ID], [Firstname], [Lastname])
VALUES (1, N'Norbert', N'Eder')
INSERT [dbo].[tPerson] ([ID], [Firstname], [Lastname])
VALUES (2, N'Karoline', N'Draxler')
SET IDENTITY_INSERT [dbo].[tPerson] OFF
Hinweis
Mittlerweile wurde die Version 1.1 veröffentlicht.
Microsoft SQL Server Database Publishing Wizard 1.1
| | | 3 Kommentare
- 1403 mal angesehen
| 0 Trackbacks
| Permalink | Trackback-URL |
SQL Server: Existiert eine Stored Procedure bereits?
15.01.07 - SQL Server Beitrag von Norbert Eder
SQL Server 2000 Replikation und Error 18483
10.07.06 - SQL Server Beitrag von Norbert Eder| | Die Replikation läßt sich nicht einrichten, da der Benutzer 'distributor_admin' nicht als Remotebenutzername eingetragen ist. Und wo genau liegt nun das Problem? Die Antwort ist eigentlich ganz einfach:
Das Problem liegt daran, dass der Servername des SQL Servers nicht mit der eingetragenen ServerName-Property überein stimmt. Vermutlich durch eine Umbenennung etc. Diese Einstellungen kann man mit folgender Abfrage herausfinden:
SELECT @@SERVERNAME, SERVERPROPERTY('ServerName')
Die beiden Felder des Resultates müssen hier gleich sein. Wenn nicht, dann ist folgendes Script auszuführen:
USE master
GO
DECLARE @serverproperty_servername varchar(100),
@servername varchar(100)
SELECT @serverproperty_servername = CONVERT(varchar(100), SERVERPROPERTY('ServerName'))
SELECT @servername = CONVERT(varchar(100), @@SERVERNAME)
EXEC sp_dropserver @server=@servername, @droplogins='droplogins'
EXEC sp_addserver @server=@serverproperty_servername, @local='local'
Damit wird die Serverregistrierung gelöscht und neu gesetzt, mit dem Wert aus dem Feld SERVERPROPERTY('ServerName'). Wird ein Server umbenannt, betrifft dies nur diese Eigenschaft, der eigentliche Servername bleibt jedoch davon unberührt. Weiters sollte die Stored Procedure sp_dropserver mit @droplogins aufgerufen werden, um etwaige vorhandene Remotelogins ebenfalls zu löschen. Andernfalls kann der Server nicht neu registriert werden.
Nach diesen Schritten ist der SQL Server neu zu starten und es kann nun versucht werden, die Replikation zu konfigurieren. Nun sollte es funktionieren.
Der ursprüngliche Tipp ist auf der Microsoft-Support-Seite [1] zu finden. Jedoch ohne den @droplogins Hinweis.
[1] Replication setup is not successful when SQL Server is deployed by using a disk image
| | | Kommentar hinzufügen
| 0 Trackbacks
| Permalink | Trackback-URL |
SQL Server 2005: Output-Klausel
21.04.06 - SQL Server Beitrag von Norbert Eder| | Eines der neuen Features des SQL Server 2005 ist die OUTPUT-Klausel, die Transact-SQL um eine nützliche Funktion erweitert.
Durch die Angabe der OUTPUT-Klausel können in INSERT, UPDATE und DELETE Anweisungen, die betroffenen Datensätze, oder Teile davon (beispielsweise die Primary-Key-Werte) zurückgegeben werden.
Dies ist beispielsweise bei einem INSERT sehr interessant, wenn die vergebene ID im weiteren Ablauf benötigt wurde. Diese konnte bisher via SELECT @@Identity bezogen werden. Danach musste ein weiteres SELECT-Statement abgesetzt werden, um den Datensatz zu erhalten. Durch die OUTPUT-Klausel ist dies nicht mehr notwendig. Die Ergebnisse werden sofort zurückgeliefert, sofern gewünscht.
Beispiel
USE AdventureWorks;
GO
DELETE tUser
OUTPUT deleted.*
WHERE ID = 7;
GO
Dieses Beispiel löscht den Datensatz mit der ID 7 aus der Tabelle tUser und gibt den gesamten Datensatz zurück. Es können jedoch auch nur einzelne Felder zurückgeliefert werden:
USE AdventureWorks;
GO
DELETE tUser
OUTPUT deleted.ID, deleted.Firstname, deleted.Lastname
WHERE ID = 7;
GO
Hier würden nur die ID, der Vorname und der Nachname als ResultSet zurückgegeben werden.
Wie kann dies unter dem .NET Framework benutzt werden? Es verhält sich sehr einfach. Die einzelnen Statements werden mit einem Command-Objekt (beispielsweise SqlCommand) abgesetzt. Im Falle von INSERT, UPDATE bzw. DELETE Abfragen wird dazu die Methode ExecuteNonQuery verwendet. Wird nun die OUTPUT-Klausel verwendet, ist anstatt der Methode ExecuteNonQuery beispielsweise die Methode ExecuteReader zu verwenden. Mit dem zurückgegebenen DataReader kann durch die einzelnen Datensätze iteriert werden.
Referenzen
[1] MSDN
| | | Kommentar hinzufügen
| 0 Trackbacks
| Permalink | Trackback-URL |
Zurück vom SQL Server 2005 Development Summit
14.04.06 - SQL Server Beitrag von Norbert Eder
SQL Server 2005: Erstellung einer Replikation
12.02.06 - SQL Server Beitrag von Norbert Eder
SQL Server 2005: Managed Code
12.02.06 - SQL Server Beitrag von Norbert Eder
SQL Server 2005: Custom Datatypes
12.02.06 - SQL Server Beitrag von Norbert Eder
Connectionstrings unter C#, VB.NET
27.01.06 - SQL Server Beitrag von Norbert Eder| | Immer wieder wird nach den richtigen Connectionstrings für die unterschiedlichsten Datenbank-Systeme gefragt. Daher mein Tipp: einfach auf http://www.connectionstrings.com/ nachsehen. Da sollte das meiste zu finden sein.
Und wie wird dieser dann in C# bzw. VB.NET verwendet? Gut, hierfür kann ich ein kleines Beispiel geben (gilt für den Microsoft SQL Server):
C#
using System.Data.SqlClient;
...
SqlConnection conn = new SqlConnection();
conn.ConnectionString = "Data Source=(local);" +
"Initial Catalog=MyDatabaseName;" +
"Integrated Security=SSPI";
conn.Open();
VB.NET
Imports System.Data.SqlClient
...
Dim conn As SqlConnection = New SqlConnection()
conn.ConnectionString = "Data Source=(local);" & _
"Initial Catalog=MyDatabaseName;" & _
"Integrated Security=SSPI"
oSQLConn.Open()
Dies gilt nun für den Microsoft SQL Server, der lokal installiert ist. Für einen SQL Server der auf einem anderen Rechner installiert ist, muss lediglich der Connectionstring ausgetauscht und angepasst werden. Die entsprechenden Connectionstrings sind im oben angeführten Link zu finden.
Noch als Zusatzinfo: Die Beispiele funktionieren sowohl bei einem SQL Server 2000, als auch beim SQL Server 2005.
| | | 19 Kommentare
- 16787 mal angesehen
| 0 Trackbacks
| Permalink | Trackback-URL | Zurück Weiter
|
|
|
|
|
|
|