Quantcast
Channel: Für Entwickler: SQL Server Forum
Viewing all 1772 articles
Browse latest View live

SetLockingMode

$
0
0
Gibt es Empfehlungen, wann "optimistic" oder "pessimistic" verwendet werden soll?

DacServices.GenerateDriftReport throws sql server version Conflict

$
0
0

I have a microsoft sql server 2014 instance with a database "myDB". In SSMS I have registered this database as Datatier application. I have installed the latest dacfx with nuget to my visual studio project. When I hit DacServices.GenerateDriftReport("myDB") it throws:

  • Databases registered as a DAC database must be hosted by an instance of SQL 2005 SP4, SQL 2008 SP2, SQL 2008 R2, SQL 2012 or SQL Azure.

Also the method DacServices.Unregister throws this error.

I am installing Windows Server Updates to the SQL Server machine but I don't believe this would fix it.

ScriptKomponente Schnittstellen richtig einbinden

$
0
0

Hallo,
kann jemand helfen?
Ich suche Beispiel-Code! (mögl. VisualBasic)
SQL Server 2012 (Integration Services, Paketerstellung)
Wie ist in einer Scriptkomponente die Schnittstelle
z.B. IDTSComponentMetaData100 korrekt zu Deklarieren
(Dim instance As IDTSComponentMetaData100)???
Und
Wie erfolgt dann die Zuweisung (eines Wertes) für eine Datenflusskomponente, welche nicht direkt mit
der Scriptkomponente  verbunden ist
(?Instance= "Package\Datenfluss\Ziel"…. ComponentMetaData)

Ziel soll sein mithilfe Script (VisualBasic) auf Eigenschaften und Methoden von Datenflusskomponenten zuzgreifen.

Danke für Antwort!

Nullwerte in Joins ignorieren

$
0
0

Hi Folks,

Manchmal sind es die anscheinend erst einmal so einfachen Abfragen die dann doch Probleme verursachen. Ich bin nicht so ganz neu beim SQL-Server, aber dieses Thema bereitet mir Kopfschmerzen.

Die Aufgabe ist recht einfach. Ich möchte gerne anhand einer Matrix mit verschiedenen Bedingungen eine Tabelle abfragen. Dabei soll, wenn eine Bedingung egal ist, einfach ein NULL in der Matrix stehen, ansonsten ein Wert.

Um es leichter verständlich zu machen, habe ich das Problem in eine allgemeinverständliche Anwendung gebaut, die auch genau wie gewünscht funktioniert. Das Problem ist nur, dass die Lösung eine CURSOR-Abfrage ist. Also das, was im Beispiel als Ergebnis erscheint, ist korrekt. Meine Frage an Euch ist, ist das auch über einen Join möglich, und wenn ja, dann wie.

Im echten Leben geht es nicht um Autos, und es geht auch nicht um 12 Datensätze, sondern um einige 100.000

Das Script erstellt alles, was Ihr zum Testen braucht, in den Messages werden die dynamischen Abfragen auch zum Testen ausgegeben (mach ich immer so, spart den Debug-Modus) 

Viel Spass beim probieren, ich freue mich auf Eure Antworten

Roland Grothe

--drop table tblautos
--drop table tblauswertungen

/* tblAutos erstellen*/
CREATE TABLE [dbo].[tblAutos](
	[auto_ID] [int] IDENTITY(1,1) NOT NULL,
	[auto_Marke] [nvarchar](50) NULL,
	[auto_Motor] [nvarchar](50) NULL,
	[auto_Farbe] [nvarchar](50) NULL,
	[auto_Typ] [nvarchar](50) NULL,
 CONSTRAINT [PK_tblAutos] PRIMARY KEY CLUSTERED 
(
	[auto_ID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

/* tblAutos füllen*/
INSERT INTO [test].[dbo].[tblAutos]
	([auto_Marke]
	,[auto_Motor]
	,[auto_Farbe]
	,[auto_Typ])
VALUES
	('Mercedes','Diesel','schwarz','Limo'),
	('VW','Diesel','blau','SUV'),
	('Audi','Benzin','rot','SUV'),
	('Volvo','Benzin','weiß','Limo'),
	('Ford','Benzin','weiß','Mini'),
	('Ford','Diesel','Schwarz','SUV'),
	('Audi','Diesel','Schwarz','Limo'),
	('Audi','Benzin','rot','Limo'),
	('VW','Benzin','blau','Mini'),
	('Mercedes','Benzin','rot','Mini'),
	('Audi','Diesel','Schwarz','Mini'),
	('Audi','Benzin','weiß','SUV')
GO


/* tblAuswertungen erstellen*/
CREATE TABLE [dbo].[tblAuswertungen](
	[ausw_ID] [int] IDENTITY(1,1) NOT NULL,
	[ausw_Bezeichnung] [nvarchar](50) NULL,
	[ausw_Marke] [nvarchar](50) NULL,
	[ausw_Motor] [nvarchar](50) NULL,
	[ausw_Farbe] [nvarchar](50) NULL,
	[ausw_Typ] [nvarchar](50) NULL,
	[ausw_Ergebnis] [int] NULL,
 CONSTRAINT [PK_tblAuswertungen] PRIMARY KEY CLUSTERED 
(
	[ausw_ID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

GO


/*tblAuswertungen füllen*/
INSERT INTO [test].[dbo].[tblAuswertungen]
           ([ausw_Bezeichnung]
           ,[ausw_Marke]
           ,[ausw_Motor]
           ,[ausw_Farbe]
           ,[ausw_Typ]
           ,[ausw_Ergebnis])
     VALUES
           ('alle Mercedes','Mercedes',NULL,NULL,NULL,NULL),
           ('alle blauen',NULL,NULL,'blau',NULL,NULL),
           ('alle Diesel',NULL,'Diesel',NULL,NULL,NULL),
           ('alle Benziner',NULL,'Benzin',NULL,NULL,NULL),
           ('alle roten Diesel',NULL,'Diesel','rot',NULL,NULL),
           ('alle roten Audi Benziner','Audi','Benzin','rot',NULL,NULL),
           ('alle roten Audi Benziner SUVs','Audi','Benzin','rot','SUV',NULL),
           ('alle schwarzen Limos',NULL,NULL,'schwarz','Limo',NULL),
           ('alle Autos',NULL,NULL,NULL,NULL,NULL)
GO


/*Ausführung mit Cursor*/

UPDATE tblAuswertungen set ausw_Ergebnis = 0

DECLARE @query nvarchar(max) = ''
DECLARE @Result int

--Cursorvariablen
	DECLARE @ID int
    DECLARE @Bezeichnung nvarchar(50)
    DECLARE @Marke nvarchar(50)
    DECLARE @Motor nvarchar(50)
    DECLARE @Farbe nvarchar(50)
    DECLARE @Typ nvarchar(50)

DECLARE cur CURSOR FOR
SELECT 
	[ausw_ID],
    [ausw_Bezeichnung],
    [ausw_Marke],
    [ausw_Motor],
    [ausw_Farbe],
    [ausw_Typ]
  FROM [test].[dbo].[tblAuswertungen]

OPEN  cur

FETCH NEXT from cur INTO
	@ID,
    @Bezeichnung,
    @Marke,
    @Motor,
    @Farbe,
    @Typ

WHILE @@FETCH_STATUS = 0
BEGIN
SET @query = 
'UPDATE tblAuswertungen SET  ausw_Ergebnis = (SELECT COUNT (*) anzahl
FROM tblAutos
WHERE 1=1 
'
SET @query += ISNULL(' AND auto_Marke = ''' + @Marke + '''
','') 
SET @query += ISNULL(' AND auto_Motor = ''' + @Motor + '''
','') 
SET @query += ISNULL(' AND auto_Farbe = ''' + @Farbe + '''
','') 
SET @query += ISNULL(' AND auto_Typ = ''' + @Typ + '''
','') 
SET @query += ') WHERE ausw_ID = ' + convert(nvarchar(5),@ID) + '
' 
Print (@query)
exec (@query)
Print @@rowcount
FETCH NEXT from cur INTO
	@ID,
    @Bezeichnung,
    @Marke,
    @Motor,
    @Farbe,
    @Typ
END
CLOSE cur
DEALLOCATE cur
SELECT * FROM tblAuswertungen


It's no problem, it's just the syntax

Informationen über lange dauernde SQl Statements

$
0
0

Guten Morgen,

ich möchte SQL Abfragen, die länger als X Minuten dauern, mitschneiden und herausfinden, warum die so lange gedauert haben.

Da diese SQL Abfragen zu anderen Zeiten sehr schnell liefen, scheint es sich evtl. um Wartevorgänge zu handeln.

Wie kann ich das am besten machen, also mitschneiden, welche lange gedauert haben (Profiler, kein Problem) und dann zu diesen Statements weitere Infos wie Ausführungsplan, wait state o.ä. ermitteln.

Es handelt sich um einen SQL Server 2008 Enterprise.

Vielen Dank.

Gregor

Berechnete Felder

$
0
0

Hallo Experten,

ich arbeite gerade in einem Projekt für das Erstellen einer Betriebsdatenerfassung mit. Dort sollen Zeiten der Mitarbeiter, Fertigungsaufträge sowie Taktzeiten der Maschinen erfasst werden. Meine bisherigen Erfahrungen haben mich gelehrt, keine Berechneten Felder in den Tabellen zu verwenden. Bei den berechneten Feldern geht es nicht darum aus einer Zeile z. B. Preis * Menge = Kosten zu berechnen sondern Informationen als Summe aus anderen Tabelle wegzuschreiben.

Konkretes Beispiel:

Tabelle Fertigungungsauftrag beinhaltet alle Informationen zum Fertigungsauftrag (SOLL-Start, SOLL-Ende, SOLL-Menge,...).

Tabelle Rückmeldung beinhaltet alles an Informationen welche durch die Mitarbeiter zurückgemeldet werden (IST-Start, IST-Ende, Gut-Menge, Ausschuss,...)

Nun steht die Überlegung im Raum, über einen Trigger, ein Feld Gut-Menge im Fertigungsauftrag zu hinterlegen und dieses beim Ändern von Rückmeldungen zu aktualisieren.

Da ich über einen Sub-Select die Informationen sowieso gruppieren und summieren kann, würde ich diese Informationen nicht explizit wegschreiben wollen, aber als Argument der Kollegen wird gesagt, dass beim Reporting man dadurch viel Leistungsfähiger ist.

Bei dem Feld "Gut-Menge" wird es sicherlich nicht bleiben, folgen wird dann noch die Auftragsdauer, Rüstzeiten, Produktionszeiten, etc.. Also alles Informationen die man aus anderen Tabellen lesen kann.

Was sagt ihr dazu?

Analysis Services: Bereitstellen eines Cubes scheitert.

$
0
0

Hallo !

Ich habe ein ganz ähnliches Problem wie der Thread: "Analysis Services nach bereitstellen Fehler" allerdings mit dem einem SQL Server 2008 R2.

Ich habe einen einfachen Cube erstellen können, wenn ich ihn aber bereitstellen möchte, läuft das ganze zwar an aber es läuft auf einen Fehler.
Kann  mir jemand helfen, den Fehler zu beseitigen?

"Fehler 7 OLE DB-Fehler: OLE DB- oder ODBC-Fehler : Fehler bei der Anmeldung für den Benutzer 'NT-AUTORITÄT\LOKALER DIENST'.; 28000."

SSAS 2012 SP1 - Fehler im Metadaten-Manager (EventID 35, anschließend 19)

$
0
0

Hi,

wir hatten inzwischen 4 Mal das Problem auf unserem Testserver, dass es unser komplettes SSAS-Projekt "zerhagelt" hat. Beginnen tut das Drama immer mit einer EventID 35 mit einer Meldung wie dieser hier:

Die Datei '\\?\d:\MSAS11.MSSQLSERVER\OLAP\Data\OLAP.0.db\Dim Produktgruppe.3.dim\32.Pgr ID.(All).lstore' konnte nicht geöffnet werden. Überprüfen Sie die Berechtigungen für die Datei, oder überprüfen Sie, ob sie von anderen Anwendungen gesperrt wird.

Ist auch klar, warum er die Datei nicht öffnen kann, da sie nicht existiert (Bereits beim Start des SSAS-Dienstes werden scheinbar "defekte" Dateien erkannt und einfach gelöscht).

Im Anschluss daran immer sofort EventID 19 mit einer Meldung wie dieser:

Fehler im Metadaten-Manager. Fehler beim Laden von 'Dim Produktgruppe' (dimension) aus der Datei '\\?\d:\MSAS11.MSSQLSERVER\OLAP\Data\OLAP.0.db\Dim Produktgruppe.32.dim.xml'.


Alles, was wir bisher tun konnten, ist ein kompletter Restore des Verzeichnisses: xx\MSAS11.MSSQLSERVER\OLAP\Data aus unserem Backup-System.

Heute hat es auch zum ersten Mal das Produktivsystem erwischt. Leider können wir keine Ursache ausmachen! Bei uns entfällt die Möglichkeit, einfach ein frisches Deployment des OLAP-Projektes zu machen, da wir nur online entwickeln dürfen (durch eine Drittsoftware, die z.B. ihre eigenen Cubes aus der Software heraus in unsere OLAP-Datenbank erstellt, sonst würde wir diese ja jedes mal platt machen).

Bisher habe ich nur in Zusammenhang mit dem SSAS 2008 von diesen Problemen gelesen, aber zum 2012er (SP1) finde ich da absolut 0.



Feste Tabellenbreite im Reportgenerator?

$
0
0

Hallo,

ich nutze den Reportgenerator von ASP.NET zum Anzeigen von Berichten. Tabellen spielen dabei eine große Rolle. Nun tritt das Problem auf, dass die Tabelle bei der Bildschirmdarstellung breiter gezogen wird als im Entwurf und beim Export zu PDF. Da alle anderen Elemente wie waagerechte Linien in der Originallänge verbleiben sieht das dann nicht gut aus.

Wie kann man die Breite der Tabelle in der Bildschirmdarstellung festlegen? Im Berichtsgenerator ist die Seitenbreite auf A4 festgelegt. Die Begrenzung des Fensters im ReportViewer bringt auch nichts, da werden nur Scrollbalken eingeblendet.

Uwe


Mittelung vom Forum

Fehlerbehandlung in Stored Procedures bei Timeout

$
0
0

Hallo,

ich habe eine Stored Procedure (MSSQL 2008), die manchmal von der aufrufenden Software wegen Timeout abgebrochen wird und dann ein Rollback durchgeführt wird.

Ich möchte nun aber wissen, bis zu welchem Punkt die Stored Procedure gekommen ist, um analysieren zu können, welcher Teil der Software lange gedauert hat.

So auf die Schnelle habe ich dazu nichts gefunden.

Eine Methode wäre, das über das Scripting.FileSystemObject zu machen und jeden Teilschritt in eine Datei zu schreiben.

Gibt es da evtl. eine elegantere Lösung?

Besten Dank.

Gregor

Datenbankupdate

$
0
0

Guten Abend in die Runde,

eine kurze Frage:

Kann eine gesicherte 2005er MSSQL-Datenbank DIREKT im MSSQL 2012 wiederhergestellt werden, oder ist ein Zwischenschritt über MSSQL 2008 R2 erforderlich bzw. zu empfehlen?

Gibt es zusätzlich noch etwas zu beachten oder Empfehlungen?

Vielen Dank schon einmal.

Jörg

Indizes

$
0
0

Hallo!

Wie verhält sich SQL, wenn man mehrere Indizes für eine Tabelle verwendet?

Kann man Abfragen einen bestimmten Index zuordnen?

Danke, Gruß Klaus

Trennen von Zeichen mit Trennzeichen

$
0
0

Hallo zusammen,

ich stehe gerade vor einer (ich dachte einfachen Aufgabe). Ich glaube ich stehe aber gerade auf dem Schlauch.

Ich möchte aus einer Nummernkette nur den vorderen Teil behalten. Als Trennzeichen wird hier ein - eingesetzt.

Beispiel:

@Counter2 kann Werte wie '9955', '12345-123', '54321' usw besitzen.

Befehl:

declare @counter2 varchar (15)
select SUBSTRING(@counter2, 1 , (select charindex( '-' , @counter2)-1))

Als Ergebnis benötige ich alles vor dem '-'. Das funktioniert mit obigem Befehl solange ich das Trennzeichen auch im Counter2 habe, (also bei dem Beispiel 12345-123 bekomme ich auch richtigerweise das Ergebnis 12345. Habe ich aber einen Wert wie 9955 bekomme ich den Fehler "Invalid length parameter passed to the LEFT or SUBSTRING function." Dort darf dann aber einfach "nichts" passieren, und als Ergebnis müsste auch wieder 9955 erscheinen.

Kann mir jemand helfen?


Warnungen zu Attributen und Hierarchien in Analysis Services

$
0
0

Ich habe ein altes umfangreicheres SSAS-Projekt "geerbt", welches ich jetzt von der Version 2005 nach 2014 migrieren möchte. Meine Erfahrungen und Kenntnisse von Analysis Services sind bisher recht gering, aber grundsätzlich hat es schon funktioniert, das alte Projekt zu importieren und auf dem neuen Server zu veröffentlichen. Die angezeigten Ergebnisse sind auch richtig, doch was mich irritiert, sind zahlreiche Warnungen, die ich bei der Bereitstellung erhalte. Insgesamt gibt es über 500 Warnungen, die sich wenn ich mich nicht vertan habe, alle auf die folgenden sieben Meldungen zurückführen lassen:

  • Warnung  AttributeRelationship: Der für die Attributbeziehung angegebene Name stimmt nicht mit dem Namen des verknüpften Attributs überein
  • Warnung  Dimension: Ignorieren Sie keine Fehler aufgrund doppelter Schlüssel. Ändern Sie die KeyDuplicate-Eigenschaft der Fehlerkonfiguration so, dass sie nicht auf 'IgnoreError' festgelegt ist
  • Warnung  Dimension: Erstellen Sie Hierarchien in Dimensionen, die keine über- und untergeordnete Dimensionen sind
  • Warnung  Hierarchy: Mindestens eine Ebene in dieser Hierarchie weist keine Attributbeziehungen auf. Dies führt möglicherweise zu einer verringerten Abfrageleistung
  • Warnung  Level: Entwerfen Sie Hierarchien so, dass niedrigere Ebenen mehr Elemente als höhere Elemente aufweisen
  • Warnung  Dimension: Vermeiden Sie sichtbare Attributhierarchien für Attribute, die in benutzerdefinierten Hierarchien als Ebenen verwendet werden
  • Warnung  RelationalDataSource: Verwenden Sie in einer Datenquelle keine nicht unterstützten OLE DB-Anbieter

Ich würde die Warnungen gerne eliminieren, damit ich in der Flut der Meldungen nicht etwas womöglich Wichtiges übersehe, aber zu diesen deutschsprachigen Texten habe ich teilweise überhaupt keine hilfreichen Informationen im Internet gefunden. Kann ich mein Visual Studio, wenn es auf Deutsch installiert ist, einfach so umschalten, dass ich die Meldungen in englischer Sprache sehe oder gibt es eine andere Möglichkeit sich den Text einer Warnung in Englisch anzeigen zu lassen um dann besser danach suchen zu können?

Verknüpft mit diesen Warnungen scheinen unterschiedliche Symbole in den Attributsbeziehungen zu sein. Es gibt da schwarze Pfeile, blaue Pfeile, gelbe Warnzeichen und blaue Warnzeichen. Da habe ich bisher auch keine Informationen zu gefunden. Kann mir jemand erklären, wofür welches Symbol steht?

Teilweise ist es mir bereits gelungen, die Warnungen zu reduzieren aber manchmal führen meine Änderungen auch zu Fehlern statt Warnungen, bei den ersten beiden Warnungen z.B. zu diesen Fehlern:

  • Fehler im Metadaten-Manager. Die Zeit-Dimension enthält eine Elementeigenschaft mit ungültigem Namen: 'NAME' ist ein reserviertes Wort.
  • Fehler im OLAP-Speichermodul: Der Datensatz wurde ausgelassen, da der Attributschlüssel ein Duplikat ist. Attribut: Name 3 der Dimension: Kreditor aus Datenbank: CubeV4, Datensatz: 21..

   (Wobei ich diese Meldung so verstehe, dass zwei Kreditoren den gleichen Inhalt im Feld „Name 3“ haben,
    was meines Erachtens doch kein Problem sein sollte).

In das ganze Thema Hierarchien und Attributsbeziehungen und auch in den Aufbau unserer alten Cubes muss ich mich noch tiefer einarbeiten. Für Links zu Seiten oder Literaturhinweise, wo diese Themen gut beschrieben werden, wäre ich dankbar.

Übernehmen einer Instanz von SQL Server 2008 auf SQL Server 2014

$
0
0

Hallo zusammen,
in meiner Firma wollen wir unser Data Warehouse von einem SQL Server 2008 Enterprise auf einen SQL Server 2014 Enterprise umziehen. Der neue SQL Server wird auf neuer Hardware (neuer Server) laufen.

Natürlich träume ich von einem möglichst einfachen Migrationsszenario. :) Ein Traum wäre es, wenn sich die Instanz des 2008 auf den 2014 kopieren lassen würde. Wir verwenden die komplette Bandbreite von Integration- über Analysis- und Reportingservices.

Hat hierzu jemand bereits Erfahrungen/Tipps/Tricks...

Vielen Dank für Eure Antworten :)


Viele Grüße Holger M. Rößler



Where-Klausel als String-Parameter

$
0
0

Hallo!

Bei mir ist das Handling des WHERE Blocks rein in TSQL langsam zu komplex. Deshalb die Frage:

Ist es möglich eine WHERE Klausel als Variable einem SQL-Statement zu übergeben?

DECLARE @zWHERE as VARCHAR(100)
SET @zWHERE = 'NR = 4'

SELECT * FROM dbo.myTabelle 

WHERE @zWHERE 


Wo muß bei Microsoft Reporting Services 2008 mit Oracle Datenquelle der Schema Name eingetragen werden?

$
0
0

Hallo!

In einer Oracle Datenbank möchte ich auf einen View HalloWelt im Schema Test zugreifen.

Die Verbindungseigenschaften sind gesetzt und die Testverbindung war erfolgreich.

Beim Dataset kann ich eine Tabelle RLMSPARSEDCOED und viele Views mit Namen ALL_.. oder USERS_.. sehen.

Sie scheinen alle keine Werte zurück zu geben.

Meine View HalloWelt sehe ich jedoch nicht.

SELECT * FROM Test.HalloWelt liefert den Fehler ORA-00942: Tabelle oder View nicht vorhanden.

Wo kann ich den Schema Namen angeben?

ResultSet von PRINT

$
0
0

Hallo liebe Entwickler,

ich sitze gerade an einer SQL-Abfrage und wollte gerne wissen, ob ResultSets die durch PRINT gebildet werden (also wenn ich in einer While-Schleife durchiterriere und dabei mit "PRINT" Ergebnisse ausgebe) genauso behandelt werden können wie "normale" ResultSets in Form einer Tabelle

Danke im Vorraus! ;)

SetLockingMode

$
0
0
Gibt es Empfehlungen, wann "optimistic" oder "pessimistic" verwendet werden soll?

DacServices.GenerateDriftReport throws sql server version Conflict

$
0
0

I have a microsoft sql server 2014 instance with a database "myDB". In SSMS I have registered this database as Datatier application. I have installed the latest dacfx with nuget to my visual studio project. When I hit DacServices.GenerateDriftReport("myDB") it throws:

  • Databases registered as a DAC database must be hosted by an instance of SQL 2005 SP4, SQL 2008 SP2, SQL 2008 R2, SQL 2012 or SQL Azure.

Also the method DacServices.Unregister throws this error.

I am installing Windows Server Updates to the SQL Server machine but I don't believe this would fix it.

Viewing all 1772 articles
Browse latest View live
<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>