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

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

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

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?


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

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

Ü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


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.

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! ;)


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?

Ergebnis aus StoredProcedure in Select übernehmen

$
0
0

Eine StoredProcedure liefert genau einen Zahlenwert, erwarted aber 3 Parameter (hier vereinfacht: ID, Feld1, Feld2). Allerdings will ich keine einzelnen Werte ausgeben, sondern das Ergebnis einer Tabelle. Ich habe es mal so versucht:

select top 10 ID, Feld1, Feld2
    , (exec getX  @ID = ID, @Feld1 = Feld1, @Feld2 = Feld2)    
from  tempx1

Aber leider klappt es so nicht (auch nicht ohne exec). Wie macht man das besser?

SSAS: Default-Eigenschaften von Dimensionen führen zu Warnungen

$
0
0

Vor ein paar Tagen habe ich hier schon ein paar Fragen zu den Warnungen gestellt, welche die SSAS bei der Verarbeitung von Dimensionen generiert (Link). Ich habe zu diesem Thema jetzt weiter herumprobiert und ich habe den Eindruck, dass die Standard-Eigenschaften von neu erstellten Objekten häufig dazu führen, dass Warnungen in großer Anzahl erzeugt werden, und dass man dann viele Eigenschaften dieser Objekte manuell abändern muss, um diese Warnungen zu unterbinden. Im Detail habe ich die unten aufgeführten Sachverhalte festgestellt. Meine Fragen dazu:

  • Kann jemand bestätigen, dass sich die Analysis-Services so, wie unten beschrieben verhalten, oder mache ich etwas falsch, wenn ich neue Dimensionen erstelle?
  • Lässt sich dieses Verhalten von SSAS ggf. ändern, so dass neue Objekte automatisch mit anderen Standard-Eigenschaften angelegt werden?
  • Gibt es zumindest in einem Teil der von mir geschilderten Fälle plausible Gründe, warum die Objekte im Standard so angelegt werden, dass sie direkt zu Warnungen führen?

  1. Wenn eine Hierarchie mit mehrere Ebenen erstellt wird, werden die Attributsbeziehungen der hierarchisch angeordneten Attribute automatisch „nebeneinander“ gestellt. Das führt zur Warnung „Mindestens eine Ebene in dieser Hierarchie weist keine Attributsbeziehungen auf. Dies führt möglicherweise zu einer verringerten Abfrageleistung“ (auf Englischvermutlich: Avoid creating hierarchies where attribute relationships do not exist between one or more levels). Man muss die Attributsbeziehungen manuell in der Reihenfolge der Hierarchien anordnen, um diese Warnung zu unterdrücken.
  2. Die automatisch erstellten Attributsbeziehungen haben die Eigenschaft „Visible=true“. Das führt zur Warnung „Vermeiden Sie sichtbare Attributhierarchien für Attribute, die in benutzerdefinierten Hierarchien als Ebenen verwendet werden“ (Avoid visible attribute hierarchies for attributes used as levels in user-defined hierarchies). Man muss die Eigenschaft manuell auf „Visible=false“ setzen, um diese Warnung zu unterdrücken.
  3. Die automatisch erstellten Attributsbeziehungen haben die Eigenschaft „RelationShipType=Flexible“. Das führt zur Warnung „Definieren Sie Attributbeziehungen ggf. als 'Fest'.“ (Define attribute relationships as 'Rigid' where appropriate).Man muss die Eigenschaft manuell auf „Rigid“ setzen, um diese Warnung zu unterdrücken.
  4. Wenn man bei einer Dimension die ErrorConfiguration auf „Standard“ stellt, bedeutet das, dass der Fehler „KeyDuplicate“ auf „IgnoreError“ steht. Das führt zur Warnung „Ignorieren Sie keine Fehler aufgrund doppelter Schlüssel. Ändern Sie die KeyDuplicate-Eigenschaft der Fehlerkonfiguration so, dass sie nicht auf 'IgnoreError' festgelegt ist.“ (Do not ignore duplicate key errors. Change the KeyDuplicate property of the error configuration so that it is not set to IgnoreError).In neueren Versionen von SSAS ist deshalb die Einstellung „Standard” nicht mehr Standard, sondern die Einstellung „Benutzerdefiniert“, in der „KeyDuplicate“ auf „ReportAndStop“ steht.
  5. Wenn ein Datenbankfeld eine reservierte Bezeichnung wie „ID“ oder „NAME“ hat, so wird für den Namen der Attributsbeziehung, welche auf dieses Feld verweist, ein Unterstrich an den Namen des Feldes angehängt. Das führt dann beim Verarbeiten zu der Meldung „Der für die Attributbeziehung angegebene Name stimmt nicht mit dem Namen des verknüpften Attributs überein.“ (The names of attribute relationships should match the names of the related attributes).Entfernen darf man den automatisch angefügten Unterstrich aber nicht. Das führt dann zu der Fehlermeldung „Fehler im Metadaten-Manager. Die …-Dimension enthält eine Elementeigenschaft mit ungültigem Namen: 'NAME' ist ein reserviertes Wort.“ (… dimension contains a member property with invalid name “Name”. Name is one of the Reserved Words).
  6. In einer neu erstellten Dimension ist die Eigenschaft „KeyColumn“ für jede Attributs-Spalte die jeweilige Spalte selber und die Eigenschaft „NameColumn“ ist leer. Je nach Inhalt dieser Spalte führt das bei der Verarbeitung zu der Fehlermeldung „Fehler im OLAP-Speichermodul: Ein doppelter Attributschlüssel wurde bei der Verarbeitung gefunden: Tabelle: '…', Spalte: '…', Wert: '…' Das Attribut ist '…'.“ (Errors in the OLAP storage engine: A duplicate attribute key has been found when processing: Table: …, Column: …, Value: '…'. The attribute is '…'.). Wäre es nicht sinnvoller, wenn im Standard die „NameColumn“ mit der Attributsspalte und die „KeyColumn“ mit der „KeyColumn“ der dem Attribut zugeordneten Hierarchie-Ebene vorbelegt würde?

OPENROWSET ( .... BULK) schlägt fehl

$
0
0

Ich versuche mit nachfolgendem T-SQL-Code eine Datei in ein FILETABLE-Verzeichnis zu kopieren.

INSERT INTO dbo.DATEISPEICHER (name, file_stream)
SELECT N'test.txt',* FROM OPENROWSET(BULK N'C:\temp\Abgleich.txt', SINGLE_BLOB) AS FileData;

Leider funktioniert das nicht wie gewünscht.

Ich erhlate immer die Meldung 

Meldung 4860, Ebene 16, Status 1, Zeile 2
Massenladen ist nicht möglich. Die Datei 'C:\temp\Abgleich.txt' ist nicht vorhanden.

Googeln zum Thema bringt einige Beiträge, die aber meist "ZUgriff verweigert" zum Thema haben.

Meist wird eine mangelhafte Berechtigung vermutet. "Jeder" sei als Berechtigung zu wenig - aber wieso und was muss man ergänzen?

Momentan benutze ich Management STudio mit einem Domänen-Admin-Account.

Die Meldung "ist nicht vorhanden" kommt übrigens sowohl bei lokalen Dateien als auch bei Dateien auf einer Freigabe

Frage zu SQL-Abfrage mit Summe

$
0
0

Hallo zusammen

Als Biespiel diese Daten

SELECT 'Hammer' AS Artikel,'rot' AS Farbe, 5 AS MengeBestellt, 2 AS Bestand
UNION
SELECT 'Hammer' AS Artikel,'blau' AS Farbe, 5 AS MengeBestellt, 4 AS Bestand
UNION
SELECT 'Hammer' AS Artikel,'gelb' AS Farbe, 5 AS MengeBestellt, 7 AS Bestand
UNION
SELECT 'Zange' AS Artikel,'rot' AS Farbe, 50 AS MengeBestellt, 2 AS Bestand
UNION
SELECT 'Zange' AS Artikel,'schwarz' AS Farbe, 50 AS MengeBestellt, 1 AS Bestand

Bei MengeBestellt ist die Totalmenge über den ganzen Artikel ohne Farbe, also Hammer hat es 5 Stück, Zange 50 Stück.
Den Bestand gibt es aber pro Farbe.

In einer Abfrage soll jetzt z.B. pro Artikel die Bestellte Menge und der Bestand erscheinen.

Resultat wäre also Hammer, 5 MengeBestellt und 13 Bestand.
Die MengeBestellt kann ich ja nicht einfach mit SUM machen, sonst gibt es 15 Stück. Ich müsste also eine Art DistinctSUM haben, bei welcher ich festlegen kann, nach was gruppiert werden soll(Artikel) und dass dann nur pro Artikel einmal die Summer gezählt wird. Mit Max geht nicht, weil z.B. auch ein Select ohne Artikel möglich sein muss. Dann müsste MengeBestellt aus 5+50 und Bestand aus allen Zeilen gerechnet werden.

Hoffe, konnte es verständlich schreiben.

Gibt es direkt ein SELECT oder muss ich das aufgeteilt rechnen?

Gruss Christoph

Viewing all 1772 articles
Browse latest View live