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

SQL-Server-Partion wird nach Datenbankimport von 5GB riesengroß. Warum?

$
0
0

Hallo zusammen,

ich habe eine Partition von 200GB auf dem der SQL-Server 2014 zum Test installiert ist. Nach dem Import einer 6GB Datenbank waren 100GB belegt. Nach einem weiteren Versuch ein DB-Backup von 5GB einzuspielen kommt die Meldung: The database requires 29094720372 additionaL FREE BYTES WHILE ONLY 105580879872 BYTES are availible.

Was sind das für riesen Dimensionen und warum nebötigt der Import soviel Platz wenn die abf-Datei nur 5GB groß ist?

Danke und Gruß

Chris



Automatisierte Datenimporte aus Text- und Excel-Dateien + Verarbeitung

$
0
0

Hallo zusammen,

ich bin auf der Suche nach Möglichkeiten, Text- und Excel-Dateien automatisch (wiederkehrend) in unseren MSSQL-Server 2008 R2 zu importieren und direkt weiter zu verarbeiten.

Mein erster Gedanke ist, dies mit Hilfe von Aufträgen über den SQL-Agent zu machen, die regelmäßig Verzeichnisse auf zu importierende Dateien durchsuchen. Wenn eine Datei vorhanden ist, würde ich diese per BULK INSERT / OPENDATASOURCE in eine Tabelle schreiben und dann per SQL bearbeiten.

Ist diese Variante sinnvoll, oder gibt es noch Alternativen (z.B. SSIS), die ich in Betracht ziehen sollte?

Danke & Gruß

Florian

Datenkonvertierungsfehler bei csv-Datenimport von Numeric-Felder mit Nachkommastelle (Statuswert 2)

$
0
0

Hallo zusammen,

ich habe eine csv-Datei und die Felddefintion aus dem ERP-System Int(zzz,zz9.99). In der angelegten Tabelle auf dem SQL-Server habe ich das Feld einmal als numeric (6,2) und auch als decimal (6,2) definiert. Da die CSV-Datei scheinbar keine brauchbaren Formate hat und ich auch in Excel vorher als Versuch das Format der Spalte geändert habe, habe ich im Datenfluss eine Konvertierung vor dem Mapping gesetzt. Hier kommt der Fehler nach execute Task:

[Datenkonvertierung [47]] Fehler: Datenkonvertierungsfehler beim Konvertieren der Breite-Spalte (141) in die Kopie von 'Breite'-Spalte (91). Die Konvertierung gab den Statuswert '2' und den Statustext 'Der Wert konnte aufgrund eines möglichen Datenverlustes nicht konvertiert werden.' zurück.

In der Ziel OLE-Zieltabelle kommt nichts an, der Job bricht bei 9500 Datensätzen ab und ich erkenne in der csv-Datei keinen Unterschied in dem Datensatz der den Fehler verursachen könnte. Ein Import als char(50) macht keine Probleme. Ich habe die Konvertierung mit Numerisch [DT_NUMERRIC] und auch als Decimal[DT_DECIMAL] vorgenommen (mit 8 0 oder mit 6 2 usw.). Es erscheint immer die Fehlermeldung :(  Numeric ohne Nachkommastellen lassen sich importieren. Hat die ev. etwas mit dem Komma/Punkt zu tun und wie umgehe ich dieses Problem?

Was läuft da schief :( Vielen Dank für eure Tipps!

Gruß Chris

 


Zwei Datumsspalten Bereich filtern

$
0
0

Hallo NG,

ich versuche aus einer Tabelle mit zwei Datumsspalten die richtigen Datensätze zu filtern, wenn ein Datum in den Bereich fällt. Als Beispiel wäre hier ein Hotel mit Anreise und Abreise eines Gastes und auf der anderen Seite die Verfügbaren Zimmer, die DatumVon und DatumBis zur Verfügung stehen. 

Tabelle
ID, DatumVon, DatumBis

SELECT * FROM tbl WHERE WHERE  (DatumVon <= CONVERT(DATETIME, '2015-11-25 00:00:00', 102)) AND (DatumBis >= CONVERT(DATETIME, '2015-11-25 00:00:00', 102)) ORDER BY DatumVon

Wenn ich diese Abfrage starte, kommen Datensätze die nicht korrekt sind und das verstehe ich nicht. 
Habe auch schon mit DATEPART und DATEDIFF etwas zu erreichen.

Wenn z.B. der Gast hier länger bleibt wie in dem Beispiel dürften in der Tabelle mit Werten z.B. DatumBis = 27.11.2015 diese Werte nicht mehr auftauchen. 

SELECT * FROM tbl WHERE WHERE  (DatumVon <= CONVERT(DATETIME, '2015-11-25 00:00:00', 102)) AND (DatumBis >= CONVERT(DATETIME, '2015-11-28 00:00:00', 102)) ORDER BY DatumVon


Ein Königreich für eine Idee ;-)

DANKE
vg Norman

Berechtigungen für Stored Procedures

$
0
0

Ich habe zwei Stored Procedures.
1. RAND.spGetRandListe

ALTER PROCEDURE [RAND].[spGetRandList]
	@lngCenter int
AS

BEGIN
	SET NOCOUNT ON;

	SELECT 	lngRandID, lngCenter, strPatID, b.strCode AS Arm
	FROM	tblRand AS a INNER JOIN
			tblCode AS b ON a.lngTherapyCode=b.lngOrd
	WHERE	b.strKey='THERAPY' AND a.lngCenter=@lngCenter
END

2. RAND.spSQLLookup

ALTER PROCEDURE [RAND].[spSQLLookup]
	@Spalte sysname,
	@Tabelle sysname,
	@Bedingung nvarchar(max)=NULL
AS
	DECLARE @SQL nvarchar(max)
	DECLARE @Wert sql_variant

	SET @SQL = 'SELECT ' + @Spalte + ' FROM ' + @Tabelle
	IF @Bedingung Is Not Null
BEGIN
	SET @SQL = @SQL + ' WHERE ' + @Bedingung

END

EXEC sp_executesql @SQL

Ein User ist dem Schema RAND zugeordnet. Dieses hat die Berechtigung Execute.

SP1 kann ausgeführt werden, bei SP2 (Kriterien: 'strDescr', 'tblCode', 'strKey=''STRATUM'' AND lngOrd=0') kommt die Fehlermeldung:

Die SELECT-Berechtigung wurde für das tblCode-Objekt, AGO_Trust-Datenbank, dbo-Schema, verweigert.

Warum?

Vielen Dank Maik

ORDER BY in UDF gibt Syntax-Fehler

$
0
0

Ich versuch in einer Table-UDF ein ORDER BY einzufügen, bekomme aber immer diese Meldung:
----- BEGIN -----
Msg 156, Level 15, State 1, Procedure funcConsensBuzKTNListe, Line 35
Falsche Syntax in der Nähe des 'ORDER'-Schlüsselwortes.
----- END -----

Hier die Funktion selbst:

ALTER FUNCTION [dbo].[funcConsensBuzKTNListe]
(
 -- Add the parameters for the function here
 @TageZurueck int
)
RETURNS TABLE
AS
RETURN
(
 -- Add the SELECT statement with parameter references here
SELECT MA_NR, MA_ID, AUS_DATUM, AUS_ABW_TYPE, AUS_ABW
FROM   (
        SELECT TOP (100) PERCENT
               ZcDatenbank.dbo.MA_DATEN.MA_NR,
               ZcDatenbank.dbo.MA_DATEN.MA_ID,
               ZcDatenbank.dbo.AUSGABE.AUS_DATUM,
               ZcDatenbank.dbo.AUSGABE.AUS_ABW_TYPE,
               CASE ZcDatenbank.dbo.AUSGABE.aus_abw_type
                   WHEN 0 THEN 0
                   ELSE ZcDatenbank.dbo.AUSGABE.aus_abw
               END AS AUS_ABW
        FROM   ZcDatenbank.dbo.AUSGABE
               INNER JOIN ZcDatenbank.dbo.MA_DATEN ON ZcDatenbank.dbo.AUSGABE.AUS_MA_NR = ZcDatenbank.dbo.MA_DATEN.MA_NR
        WHERE  ZcDatenbank.dbo.MA_DATEN.MA_FUN = 5
        AND    ZcDatenbank.dbo.AUSGABE.AUS_DATUM BETWEEN DATEADD( day, - @TageZurueck, { fn NOW() } ) AND { fn NOW() } )
        AND    ZcDatenbank.dbo.AUSGABE.AUS_ABW_TYPE IN (0, 1)
        AND    ZcDatenbank.dbo.MA_DATEN.MA_NR = 1
       ) AS a
GROUP BY MA_NR, MA_ID, AUS_DATUM, AUS_ABW, AUS_ABW_TYPE
)
ORDER BY MA_NR, AUS_DATUM   <--- Erzeugt den Fehler


Was muss ich korrigieren?

vielen Dank im voraus


SQL Count Abfrage beschleunigen

$
0
0

Hallo,

ich speichere Messdaten in einer SQL Tabelle ab und überprüfe anschließen mit "select count(*) from myTable where Messungsnummer like 'xyz' " ob 7500 Datensätze zur Messung abgespeichert wurden. 

Ist die Tabelle noch ziemlich klein, dauert die ganze Überprüfung ca. 70 ms. Im Moment sind ca 2500 Messungen a 7500 Datensätzen darin gespeichert. Jetzt dauert die Abfrage ca 8 s, was zu lange ist. Ich habe mir die Dauer der Überprüfungsvorgang bei jedem Speichervorgang in einer Textdatei ausgeben lassen und je voller die Tabelle ist, desto länger dauert die Überprüfung. Es werden dieses Jahr noch ca. 10000 Messungen dazukommen.

Wie kann ich sie beschleunigen? Ziel wären so 1-2 Sekunden Dauer. Ich habe einen Index auf die Spalte "Messungsnummer" gelegt.

Danke schon mal im voraus.

VG 

Matthias

Summe aus einer Tabelle (datetime) und Bezeichnung aus eine andere Tabelle abfragen???

$
0
0

Hallo,

ich habe zwei Tabellen, Mitarbeiter und Termine. Jetzt möchte ich eine Abfrage machen, so dass als Ergebnis mir den Nachname aus Tabelle Mitarbeiter und die Summe der geleisteten Arbeitszeit (ende - start) aus Termine für jeweiligen Mitarbeiter geliefert wird. start und ende haben den Datentyp datetime.

Irgendwie bekomme ich es nicht hin. Wäre nett wenn jemand mir dabei helfen könnte.


Gruesse, NUNUI




Volltextsuche SQL-Server 2014 - Suche in Excel - Dateien funktioniert nur zu etwa 40 Prozent.

$
0
0

Ich benutze SQL-Server 2014 und verwende dort die Volltextsuche und Filestream.

Nun finde ich in Excel-Dateien nicht alle Suchtexte, die aber garantiert in diesen Files vorhanden sind.

In meinem Beispiel benutze ich 17 Begriffe nämlich die folgenden:

Daheim Lieferservice GmbH
Arbeiterwohlfahrt Bundesverband e.V.
Augenarztpraxis Milchmann
ABC-Pflegedienst
Sunset Solar KG
Flitzer Verkehrsgesellschaft mbH
Autohaus Knusper GmbH
Bezirksamt Weltende
Kamm Elektrotechnik GmbH
Eschsauer Solarstromsysteme GmbH
Deutsche Bahn
Hamburg Tourismus GmbH
Wohnbau GmbH
Universitätsklinikum Hamburg
Tchibo Deutschland GmbH
Schornsteinfegermeister Mingsdorf
Vollkornbäckerei Erntefrisch

Diese habe ich in einem Excel, einem Excel2003, einem Word und einem normalen Textfile abgelegt.

Die Files liegen auf dem Server unter:

D:\TEMP\Found_In_Excel.xlsx
D:\TEMP\Found_In_Excel_2003.xls
D:\TEMP\Found_In_Word.docx
D:\TEMP\Found_In_Text.txt

Nun habe ich folgenden Code:

USE TEST_DB

set NOCOUNT ON
GO

--------------------------
-- Tabelle [MyFileTable]:
--------------------------
if exists (select * from sys.tables where name = 'MyFileTable')
    DROP TABLE [dbo].MyFileTable
GO

CREATE TABLE [dbo].MyFileTable
(
    NUM             int IDENTITY(1,1)   NOT NULL,
    GID             UNIQUEIDENTIFIER    ROWGUIDCOL  NOT NULL UNIQUE CONSTRAINT DF_FileTable_GID  DEFAULT (newid()),
    FileData        VARBINARY(MAX)      FILESTREAM  NOT NULL,   -- Document Binary Large Object
    FileExtension   nvarchar (8)                    NOT NULL,   -- Extension
    FullFileName    varchar (200)                   NOT NULL    -- Dateiname.Extension
        CONSTRAINT [PK_FileTable_NUM] PRIMARY KEY CLUSTERED (NUM) on [PRIMARY]
) ON [PRIMARY]
GO

CREATE FULLTEXT INDEX ON dbo.MyFileTable(FileData TYPE COLUMN FileExtension LANGUAGE German STATISTICAL_SEMANTICS)
   KEY INDEX PK_FileTable_NUM
   WITH STOPLIST = [GermanStopList];
GO

insert into MyFileTable ( FileData, FileExtension, FullFileName)
Select
    (SELECT BulkColumn FROM OPENROWSET( BULK 'D:\TEMP\Found_In_Excel.xlsx', SINGLE_BLOB) as ExternalFile),
    '.xlsx',
    'Found_In_Excel.xlsx'

insert into MyFileTable ( FileData, FileExtension, FullFileName)
Select
    (SELECT BulkColumn FROM OPENROWSET( BULK 'D:\TEMP\Found_In_Excel_2003.xls', SINGLE_BLOB) as ExternalFile),
    '.xls',
    'Found_In_Excel_2003.xls'

insert into MyFileTable ( FileData, FileExtension, FullFileName)
Select
    (SELECT BulkColumn FROM OPENROWSET( BULK 'D:\TEMP\Found_In_Word.docx', SINGLE_BLOB) as ExternalFile),
    '.docx',
    'Found_In_Word.docx'
GO

insert into MyFileTable ( FileData, FileExtension, FullFileName)
Select
    (SELECT BulkColumn FROM OPENROWSET( BULK 'D:\TEMP\Found_In_Text.txt', SINGLE_BLOB) as ExternalFile),
    '.txt',
    'Found_In_Text.txt'
GO

PRINT 'Wait Start'
GO
WAITFOR DELAY '00:00:05';
PRINT 'Wait End'
GO

DECLARE
    @TestDaten TABLE (NAME varchar (200) NOT NULL, ERGEBNIS varchar (200) NULL);

insert into @TestDaten (NAME) VALUES  ( 'Daheim Lieferservice GmbH' ),
                                      ( 'Arbeiterwohlfahrt Bundesverband e.V.' ),
                                      ( 'Augenarztpraxis Milchmann' ),
                                      ( 'ABC-Pflegedienst' ),
                                      ( 'Sunset Solar KG' ),
                                      ( 'Flitzer Verkehrsgesellschaft mbH' ),
                                      ( 'Autohaus Knusper GmbH' ),
                                      ( 'Bezirksamt Weltende' ),
                                      ( 'Kamm Elektrotechnik GmbH' ),
                                      ( 'Eschsauer Solarstromsysteme GmbH' ),
                                      ( 'Deutsche Bahn' ),
                                      ( 'Hamburg Tourismus GmbH' ),
                                      ( 'Wohnbau GmbH' ),
                                      ( 'Universitätsklinikum Hamburg' ),
                                      ( 'Tchibo Deutschland GmbH' ),
                                      ( 'Schornsteinfegermeister Mingsdorf' ),
                                      ( 'Vollkornbäckerei Erntefrisch' )

DECLARE crs_Test CURSOR FOR
    select NAME from @TestDaten;

declare @name           varchar (200),
        @Suchtext       varchar (200),
        @Ergebnis       varchar (200),
        @length         int;

OPEN crs_Test

WHILE ( 1 = 1 )
BEGIN
    FETCH crs_Test INTO @name;

    IF @@fetch_status <> 0
        BREAK;

    set @Ergebnis = '';

    SET @Suchtext = '"' + @name + '"';

    select @Ergebnis = @Ergebnis + isnull (FullFileName, '') + ' / ' from MyFileTable
    WHERE  CONTAINS(FileData, @Suchtext);

    set @length = len (@Ergebnis);

    if (@length > 3)
        SET @Ergebnis = substring (@Ergebnis, 1, @length - 2);

    update @TestDaten set ERGEBNIS = @Ergebnis where NAME = @name;
END

CLOSE crs_Test;

select * from @TestDaten

set NOCOUNT OFF
GO

Ergebnis:

NAME    ERGEBNIS
Daheim Lieferservice GmbH    Found_In_Word.docx / Found_In_Text.txt
Arbeiterwohlfahrt Bundesverband e.V.    Found_In_Word.docx / Found_In_Text.txt
Augenarztpraxis Milchmann    Found_In_Word.docx / Found_In_Text.txt
ABC-Pflegedienst    Found_In_Word.docx / Found_In_Text.txt
Sunset Solar KG    Found_In_Excel.xlsx / Found_In_Excel_2003.xls / Found_In_Word.docx / Found_In_Text.txt
Flitzer Verkehrsgesellschaft mbH    Found_In_Word.docx / Found_In_Text.txt
Autohaus Knusper GmbH    Found_In_Excel.xlsx / Found_In_Excel_2003.xls / Found_In_Word.docx / Found_In_Text.txt
Bezirksamt Weltende    Found_In_Excel.xlsx / Found_In_Excel_2003.xls / Found_In_Word.docx / Found_In_Text.txt
Kamm Elektrotechnik GmbH    Found_In_Excel.xlsx / Found_In_Excel_2003.xls / Found_In_Word.docx / Found_In_Text.txt
Eschsauer Solarstromsysteme GmbH    Found_In_Word.docx / Found_In_Text.txt
Deutsche Bahn    Found_In_Excel.xlsx / Found_In_Excel_2003.xls / Found_In_Word.docx / Found_In_Text.txt
Hamburg Tourismus GmbH    Found_In_Excel.xlsx / Found_In_Excel_2003.xls / Found_In_Word.docx / Found_In_Text.txt
Wohnbau GmbH    Found_In_Excel.xlsx / Found_In_Excel_2003.xls / Found_In_Word.docx / Found_In_Text.txt
Universitätsklinikum Hamburg    Found_In_Word.docx / Found_In_Text.txt
Tchibo Deutschland GmbH    Found_In_Word.docx / Found_In_Text.txt
Schornsteinfegermeister Mingsdorf    Found_In_Word.docx / Found_In_Text.txt
Vollkornbäckerei Erntefrisch    Found_In_Word.docx / Found_In_Text.txt

Das heißt in Word und im Text-File wird alles gefunden, in den Excel-Files aber nur 7 von 17 mal.

Hat jemand eine Erklärung dafür, oder ist das ein Bug?

Prozeduren, Funktionen usw. beim Applikationsdesign

$
0
0

Hallo Experten,

ich arbeite an einer Anwendung seit dem Jahr 2005. Die ist also schon die die Jahre gekommen und ich habe so manche Programmiersünde gemacht, die ich in einer neuen Version beseitigen will. Auch wenn ich dafür ein paar Monate jetzt brauche.

Ich beschäftige mit seit einiger Zeit intensiv mit dem SQL-Server und bin von den Möglichkeiten (Trigger, Prozuduren, Funktionen) begeistert. Auch habe ich schon testweise einen Trigger unter Dot.Net erstellt und eingebunden.

Jetzt aber zu meiner Frage: Wieviel Programmlogik sollte man maximal in den SQL-Server packen?

Ich meine, das ich in meiner "alten" Anwendung oft Programmschritte habe, die mehrere Tabellen betreffen mit auslesen, hochzählen, neu schreiben, in einer anderen Tabelle eine Referenz schreiben usw.

So wie ich das jetzt sehe, kann ich einen großen Teil meiner Anwendung in Prozeduren verpackt auf den SQL-Server legen und brauche dann von meinerAnwendung nur die Procedur aufrufen und lasse mir das notwendige Ergebnis zurückgeben. Dann ist aber im Extremfall 60-70% meiner Anwendung auf dem SQL-Server.

Macht das Sinn? Ist das so gewollt? oder sollte ich doch möglichst alles in der Anwendung lassen.

Was ist eure Erfahrung, Empfelung. Wo sollte mich mein Weg hinführen?

Danke für jeden Tipp!

Einfache Frage zum Abschneiden von Strings in Variablen

$
0
0

Mal was ganz Einfaches:

Gibt es eine Möglichkeit zu verhindern, dass Strings in Variablen vom SQL-Server automatisch abgeschnitten werden?
declare @a varchar (1)
set @a = 'AB';
select @a

liefert mir als Ergebnis 'A' anstatt mir zu sagen, dass 'AB' nicht in die variable @a passt.

Versuche ich einen zu langen Text in eine Tabellenspalte einzutragen erhalte ich ja auch einen Fehler:

create table my_test
(
    kurz varchar (1)
)

insert into my_test values ('AB')
liefert:

Meldung 8152, Ebene 16, Status 14, Zeile 14
Zeichenfolgen- oder Binärdaten würden abgeschnitten.

Date Differenz dann gruppieren

$
0
0

Hallo ihr Superhirne

Ich stehe mal volkommen auf dem Schlauch.

Meine Ausstattung:
VS 2015 Community
Oracle 11

Mein Vorhaben:
Ich habe Bauteilnummern und zwei mal DateTime (Anfdatum und Lieferdatum).
Das Transportmittel hat eine vorgegebene Zeit die Verstreichen darf.
Jetzt habe ich in sinn Die Differenz der beiden Date Time werte zu nehmen und den Durchschnittswert auszurechnen.
Den Durchschnittswert dan vür die zeitliche vorgabe des Transports zu verwenden.

Meine Frage:
Ich komme einfach nicht drauf wie ich den select aufbauen soll.

Vielleicht könnt ihr mir auf die Sprünge Helfen, das wäre eine sehr große hilfe für mich. Und wenn nötig/möglich verbesserungsvorschläge

LG
Loki


Linked Server für PostgreSQL/PostGIS

$
0
0

Hallo Leute,

Ich habe folgendes Problem:

Ich habe Lokal eine PostgreSQL Datenbank mit der räumlichen erweiterung  PostGIS. Was ich gerne möchte ist, dass ich über das Microsoft SQL Server Managament Studio diese Datenbank anspreche.
Das ganze funktioniert leider nur zu einem Teil, ich habe es geschafft eine Verbindung aufzubauen und Querys zu erstellen. Jedoch funtioniert das ganze nicht wenn in einem Table eine Geometry Spalte inkludiert ist. Wenn ich dann eine Abfrage erstelle kommt folgende Fehlermeldung:

Msg 7356, Level 16, State 1, Line 1
The OLE DB provider "MSDASQL" for linked server "LOCAL POSTGRESQL" supplied inconsistent metadata for a column. The column "geom" (compile-time ordinal 8) of object ""postgis"."public"."kg"" was reported to have a "DBCOLUMNFLAGS_ISLONG" of 128 at compile time and 0 at run time.

Mein allgemeines Vorgehen zur erstellen der Verbindung habe ich hier abgeschaut
https://www.mssqltips.com/sqlservertip/3662/sql-server-and-postgresql-linked-server-configuration--part-2/

Ich hoffe ihr könnt mir weiterhelfen.

Alter table Add "Automatisiert"

$
0
0

Moin

kann ich aus einer vorhandenen tabelle ein Alter Table Add script(für eine Feld/Spalte) automatisch generieren lassen für eine andere Datenbank?

mit Standardwert - evtl. einschränkungen...

soetwas wie nimm Feld NeuesFeld aus der Datenbank x und erstelle mir dieses in Datenbank y in der gleichen tabelle

Ausführungsplan interpritieren

$
0
0

Hallo,

ich bin relativ neu im Interpritieren von Ausführungsplänen....
Daher weiss ich nicht genau, auf was ich achten muss, um einen schlechten Plan zu erkennen.

Situation:
Kleine Tabelle mit 1750 Datensätzen und ca. 20 Spalten und einem primary key.
Auf die Spalte vom Typ NVARCHAR(25) habe ich einen Idex gesetzt. Primary key sitzt auf einer anderen Spalte.
Ich schreibe folgende einfache Abfrage:

select * from vis.customer_contactwhere second_name = 'Test';
Nun habe ich die Abfrage mit und ohne den Index auf diese Spalte ausgeführt wird.
Ohne Index:


Mit Index


Ich bin der Meinung, dass für den Ergebnis die Wurzel des Baumes betrachtet werden soll und wie da die Kosten sind
und nicht die einzelnen Blätter, weil es kommt ja am Ende darauf an, wie teuer "Select" ist.
Daraus lese ich ab, dass mit dem Index "Estimated Subtree Cost" um einiges geringer ist, als ohne Index.
Kann ich daraus schließen, dass es mit dem Index besser ist?
Oder kann man aus den angezeigten Informationen keinen Rückschluss ziehen, was besser ist und man sich doch die Blätter betrachten muss?

Danke für die Tipps.


dbo Schema

$
0
0

Hallo,
gibt es eine Möglichkeit beim Import von Tabellen (Bsp. Access) vor den Tabellennamen kein Schema! (z.B. dbo oder anderes) zu setzen, sondern
das der Tabellennamen unverändert bleibt?
Hintergrund ist die Migration von DB auf SQL Server 2014, welche anschließend mit Access als Frontend verknüft werden sollen.
Nach der Verknüpfung mit Access Tabellennamen = dbo_Tabellennamen, so funktionieren die Abfragen auf die Tabellen nicht mehr.


Gruß ro_grille

Erster Buchstabe wird bei Import via ODBC bei Textfeldern abgeschnitten.

$
0
0

Hallo zusammen,

ich stehe aktuell vor einem Problem, für das ich einfach keine Lösung finde. Ich möchte von einer SAS-Datenbank Daten via ODBC-Schnittstelle in einen SQL-Server 2008 R2 importieren. Die ODBC-Schnittstelle habe ich soweit eingerichtet und sollte eigentlich auch funktionieren, auf jeden Fall bekomme ich korrekte Daten, wenn ich diese ODBC-Schnittstelle in MS-Access 2013 nutze.

Wenn ich aber jetzt über den Datenimport-Assistent im SQL-Server 2014 Management Studio die Daten importieren möchte funktioniert anfänglich alles ganz gut, d.h. Ich bekomme ohne Probleme die Tabellen aus der SAS-Datenbank angezeigt.

Wenn ich aber jetzt die Daten importiere, werden in allen Textfelder immer der erste Buchstabe abgeschnitten (Datum & time felder funktionieren hingegen ohne Probleme).

Ich habe auch schon versucht beim Import andere Feldtypen & Feldlängen zu verwenden (z.b. varchar, nchar usw.) aber nichts hat geholfen. Immer wird der erste Buchstaben abgeschnitten.

Für Hilfe wäre ich sehr dankbar !!!

Viele Grüße

Andreas

Übergabe von Parametern an Table Valued Function

$
0
0

Hallo Kollegen,

ich habe derzeit ein Problem mit einer Table Valued Funktion. Es geht darum, eine Tabelle, die lediglich Zuweisungen von Produkten zu Teams (n:n) enthält, als eindeutiges Recordset auszugeben. Die Eindeutigkeit der Tabelle (PK: TeamID, ProduktID) war bisher anhand des Tabellenaufbaus gewährleistet. Nun wünscht der Kunde, zukünftige Änderungen bereits vorzeitig darzustellen und ältere Einstellungen weiterhin zur Verfügung zu halten. Daher wurde eine Neue Column [GueltigAb] eingefügt, diese in den PK aufgenommen.

Zur Datenauswertung ist natürlich für ein bestimmtes Datum weiterhin eine Eindeutigkeit gemäß des alten PK gefordert. Die Erstellung dieses Recordsets übernimmt die Funktion.

Die Funktion selbst funktioniert einwandfrei, sie liefert eine eindeutige Liste aller Zuordnungen zu einem bestimmten Datum.

Allerdings habe ich beim Aufruf der Funktion ein Problem.

SELECT
....
FROM
  [dbo].tblSammelVolumesDP sdp
    INNER JOIN dbo.gtvf_GetTeamsDatum(sdp.Tag) pt
      ON sdp.prdID = p.prdID
    INNER JOIN tblSammelVolumesTeam st
      ON pt.tea_ID = st.tea_ID
        AND sdp.tag = st.tag
  

Dieser Aufruf hat vorher (der erste INNER JOIN (Alias pt) bezog sich auf die eindeutige Tabelle, gut funktioniert. Bei diesem

Aufruf nun bekomme ich aber die Fehlermeldung:

The multipart identifier sdp.tag could not be bound

Ich versehe dies nicht, da genau dieser Identifier im zweiten INNER JOIN einwandfrei gebunden wird. 

Alle Spalten [Tag] haben den Datentyp Date, die Funktion erwartet ein Date als Parameter.

Vielen Dank im voraus für Eure Unterstützung

Roland Grothe


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


Einstellungen zum Veröffentlichen in VS2015

$
0
0

Hallo Forum,

seit ein paar Tagen spiele ich mit Lightswitch rum und möchte jetzt mal etwas auf einen virtuellen Webserver hochladen.
Jetzt stehe ich vor dem Problem dass VS offensichtlich nicht mit dem Server verbinden will/kann.

Unter Erstellen - Veröffentlichen kommt ja der Assistent für die Verbindung.
Hier kann ich auch erfolgreich eine Verbindung zum Webserver herstellen (Abschnitt Veröffentlischungseinstellungen).
Sicherheitseinstellungen habe ich schon auf "ohne" HTTPS um das auszuschließen, Firewall hab ich auch abgeschaltet (Serverseitig)
Beim Register Datenverbindung, wo ich den SQL-Zugang einrichte komme ich nicht weiter.
Es läuft ein SQL Server 2012 in den ich mich auch im Remotedesktop einloggen kann und wo ich auch eine neue Datenbank angelegt habe (Dachte zwar dass VS das macht aber selbst die Fehlerquelle wollte ich vermeiden).

Wenn ich beim Servernamen das Dropdown öffne zeigt er mir meinen lokal installierten Server an aber nicht den auf'm Remoteserver.
Ich habe also den Servernamen manuell eingegeben (TEST_SQLSERVER). Die Testverbindung klappt weder mit Windows-Auth noch mit SQL-Server-Auth.
Muss der Pfad zum Webserver dem SQL-Servernamen vorangestellt werden? - hab ich auch erfolglos versucht im \ und mit / als Trennung.

Ich bekomme immer wieder den Fehler wie im angehängten Bild.

Was kann ich tun bzw. was mache ich falsch?

Danke und Gruß

Carsten

MDX-Abfrage läuft immer in Timeout - MDX optimieren

$
0
0

Hallo zusammen,

also vorneweg, ich bin jetzt nicht unbedingt der MDX-Crack, daher die Frage. Ich hab von eine Query die auf der kleineren "Modelebene" funktioniert.

Wenn ich das alles jetzt aber auf die Einheiten-Ebene runterbrechen will, dann läuft das alles immer in ein Timeout nach 2 Stunden.
Könnte man die Query evtl. noch irgendwo optimieren?

with member [Measures].[QtyTotal] as [Measures].[QtyInWarranty] + [Measures].[QtyInExtension]
Member [Measures].[QtyInWarrantyLastDayOfMonth] AS
(
[Dim Calendar].[Calendar].CurrentMember.LASTCHILD
,[Measures].[QtyInWarranty]
)
Member [Measures].[QtyInExtensionLastDayOfMonth] AS
(
[Dim Calendar].[Calendar].CurrentMember.LASTCHILD
,[Measures].[QtyInExtension]
)
SELECT
{ [Measures].[QtyInWarrantyLastDayOfMonth],
[Measures].[QtyInExtensionLastDayOfMonth],
[Measures].[QtyInWarranty],
[Measures].[QtyInExtension],
[Measures].[QtyStdIn],
[Measures].[QtyStdOut],
[Measures].[QtyExtIn],
[Measures].[QtyExtOut], [Measures].[QtyTotal]} on 0,
Filter(NONEMPTY(CROSSJOIN(
{[v Dim Unit Model 4IB].[Id Unit].[Id Unit].members},
{[Dim Country].[Id Country].[Id Country].members},
{[Dim Calendar].[Calendar].[Id Calendar Month].members}
),
[Measures].[QtyTotal]
),
[Measures].[QtyTotal] > 0) on 1
FROM [InstalledBaseCS_Serial]
WHERE [Dim Calendar].[Year].&[2015]

Vielen Dank für die Unterstützung.

Armin


Viewing all 1772 articles
Browse latest View live