|
Îåêßíçóå áðü ôï ìÝëïò Wizard!. Τελευταία δημοσίευση από το μέλος spaceman στις 28-12-2010, 13:56. Υπάρχουν 17 απαντήσεις.
-
27-12-2010, 13:50
|
-
Wizard!
-
-

-
Μέλος από τις 17-04-2006
-
-
Δημοσιεύσεις 24
-
-
|
Καλησπέρα και χρόνια πολλά σε όλους. Εύχομαι κάθε όνειρό σας να γίνει πραγματικότητα και όλοι μαζί να ξεπεράσουμε τις όποιες δυσκολίες αντιμετωπίζουμε τελευταία σα χώρα :)
Στο θέμα τώρα... Έχουμε μια κεντρική βάση SQL στην οποία υπάρχουν οι εξής πίνακες: Χώρες, Πόλεις, Αεροδρόμια. Αυτή η βάση ενημερώνεται κεντρικά καθημερινά και στο τέλος της ημέρας τρέχει μια διαδικασία που συγχρονίζει κάποιες περιφεριακές. Η διαδικασία αυτή είναι απαραίτητη και ΔΕ μπορεί να αντικατασταθεί από κάποιο replication. Στην κάθε περιφερειακή βάση υπάρχει ένα indexed view που περιλαμβάνει τους 3 πίνακες και ένας FTC που περιλαμβάνει όλα τα πεδία για λόγους αναζήτησης.
Το πρόβλημα είναι, όταν κάποιες φορές χρειάζεται να γίνει Truncate κάποιος από τους πίνακες και για να επιτευχθεί αυτό αναγκαστικά γίνονται drop τ index και το view και μετά recreate. Μετά το πέρας της διαδικασίας λοιπόν, κάνοντας μια αναζήτηση στον FTC δε φέρνει αποτελέσματα.
Ξεχνάω κάτι; περίμενα αρκετή ώρα ώστε να ενημερωθούν indexes αλλά δε φέρνει τίποτα.
|
|
-
27-12-2010, 13:57
|
|
Απ: Indexed Views & Rebuild
rebuild τον fts catalog τον έκανες;
Antonios Chatzipavlis
|
|
-
27-12-2010, 14:43
|
-
27-12-2010, 15:16
|
-
Wizard!
-
-

-
Μέλος από τις 17-04-2006
-
-
Δημοσιεύσεις 24
-
-
|
Απ: Indexed Views & Rebuild
Antonios Chatzipavlis:
rebuild τον fts catalog τον έκανες;
To δοκίμασα κι αυτό, χωρίς αποτέλεσμα. Αν και δεν νομίζω να είναι δόκιμο τη στιγμή που ο κατάλος μπορεί να έχει κι άλλα indexes μέσα και να κάνει αρκετό χρόνο για rebuild.
spaceman:
Όχι, είναι 2008 με όλα τα updates.
|
|
-
27-12-2010, 15:58
|
|
Απ: Indexed Views & Rebuild
Ωραιότατα, Έχω μερικές ερωτήσεις που θα ήθελα αν μπορείς να μας απαντήσεις Αν έχω καταλάβει καλά το full text το βασίζεις πάνω στο indexed view σωστά; Αν ναι τότε πριν κάνεις truncate σβήνεις τον index πάνω στο view και μετα το view σωστά; Αυτό κανόνικά θα σου έβγαζε λάθος 7613 αν σου βγάζει πως το προσπερνάς? μήπως σβήνεις το fts? Κάνω τις ερωτήσεις αυτές γιατί προσπαθώ να καταλάβω το περιβάλλον και την λογική που έχεις πριν προχωρήσω παρακάτω Σε ευχαριστώ
Antonios Chatzipavlis
|
|
-
27-12-2010, 16:49
|
-
spaceman
-
-

-
Μέλος από τις 06-06-2006
-
-
Δημοσιεύσεις 65
-
-
|
Απ: Indexed Views & Rebuild
Τι αποτελεσματα σου γυρναει το παρακατω? SELECT * FROM sys.fulltext_indexes
Υποθετωντας, οτι δημιουργεις FT index με tsql, μηπως χρησιμοποιεις το option CHANGE_TRACKING = MANUAL or OFF/NO POPULATION ?
|
|
-
27-12-2010, 17:02
|
-
Wizard!
-
-

-
Μέλος από τις 17-04-2006
-
-
Δημοσιεύσεις 24
-
-
|
Απ: Indexed Views & Rebuild
Antonios Chatzipavlis:
Ωραιότατα,
Έχω μερικές ερωτήσεις που θα ήθελα αν μπορείς να μας απαντήσεις
Αν έχω καταλάβει καλά το full text το βασίζεις πάνω στο indexed view σωστά;
Αν ναι τότε πριν κάνεις truncate σβήνεις τον index πάνω στο view και μετα το view σωστά;
Αυτό κανόνικά θα σου έβγαζε λάθος 7613 αν σου βγάζει πως το προσπερνάς? μήπως σβήνεις το fts?
Κάνω τις ερωτήσεις αυτές γιατί προσπαθώ να καταλάβω το περιβάλλον και την λογική που έχεις πριν προχωρήσω παρακάτω
Σε ευχαριστώ
Εγώ ευχαριστώ :-)
Λοιπόν, ναι, το ftc είναι βασιζμένο πάνω σε indexed view. Αυτό αναγκαστικά γιατί ψάχνω σε 3 διαφορετικά tables. Σας παραθέτω το script. Μετά την εκτέλεσή του, αντιγράφονται όλα τα δεδομένα στον ένα πίνακα για λόγους συγχρονισμού
USE [B2COnline]
GO
DROP FULLTEXT INDEX ON dbo.[view_AutoCompleteAirports]
IF EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[view_AutoCompleteAirports]') AND name = N'idx_AirPort_ID')
DROP INDEX [idx_AirPort_ID] ON [dbo].[view_AutoCompleteAirports] WITH ( ONLINE = OFF )
GO
IF EXISTS (SELECT * FROM sys.views WHERE object_id = OBJECT_ID(N'[dbo].[view_AutoCompleteAirports]'))
DROP VIEW [dbo].[view_AutoCompleteAirports]
GO
TRUNCATE TABLE [dbo].[tbl_AirPorts]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE VIEW [dbo].[view_AutoCompleteAirports] WITH SCHEMABINDING
AS
SELECT dbo.tbl_Countries.Country, dbo.tbl_Countries.CountryGR, dbo.tbl_Countries.CountryCode, dbo.tbl_Cities.Country_ID, dbo.tbl_Cities.City, dbo.tbl_Cities.CityGR,
dbo.tbl_Cities.CityCode, dbo.tbl_AirPorts.CityID, dbo.tbl_AirPorts.AirPortID, dbo.tbl_AirPorts.AirPortName, dbo.tbl_AirPorts.AirPortCODE
FROM dbo.tbl_Countries INNER JOIN
dbo.tbl_Cities ON dbo.tbl_Countries.Country_ID = dbo.tbl_Cities.Country_ID INNER JOIN
dbo.tbl_AirPorts ON dbo.tbl_Cities.City_ID = dbo.tbl_AirPorts.CityID
GO
SET ARITHABORT ON
GO
SET CONCAT_NULL_YIELDS_NULL ON
GO
SET ANSI_PADDING ON
GO
SET ANSI_WARNINGS ON
GO
SET NUMERIC_ROUNDABORT OFF
GO
CREATE UNIQUE CLUSTERED INDEX [idx_AirPort_ID] ON [dbo].[view_AutoCompleteAirports]
(
[AirPortID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
CREATE FULLTEXT INDEX ON dbo.[view_AutoCompleteAirports]
(
Country, CountryGR, CountryCode, City, CityGR, CityCode, AirPortName, AirPortCODE
)
KEY INDEX idx_AirPort_ID;
GO
ALTER FULLTEXT INDEX ON dbo.[view_AutoCompleteAirports] ENABLE;
GO
|
|
-
27-12-2010, 18:45
|
-
spaceman
-
-

-
Μέλος από τις 06-06-2006
-
-
Δημοσιεύσεις 65
-
-
|
Απ: Indexed Views & Rebuild
Αν το παρακατω επιστρεφει εγγραφες, τοτε ο full text index εχει δημιουργηθει k populated κανονικα: SELECT * FROM sys.dm_fts_index_keywords(DB_ID(N'B2COnline'), OBJECT_ID(N'dbo.view_AutoCompleteAirports', N'V'))
--ΗΤΗ--
|
|
-
27-12-2010, 20:53
|
|
Απ: Indexed Views & Rebuild
Επίσης θα ήθελα να μας πεις αν η παρακάτω σου φέρνει εγγραφές, αν σου φέρνει θα ήθελα το αποτέλεσμα της plz. select * from sys.dm_fts_outstanding_batches μια μικρή διόρθωση στην εντολή που σου έδωσε ο φίλος spaceman δεν υπάρχει η τελευταία παράμετρος.
Antonios Chatzipavlis
|
|
-
27-12-2010, 21:51
|
-
spaceman
-
-

-
Μέλος από τις 06-06-2006
-
-
Δημοσιεύσεις 65
-
-
|
Απ: Indexed Views & Rebuild
...δεν υπάρχει η τελευταία παράμετρος
Η N'V' ? OBJECT_ID ( '[ database_name . [ schema_name ] . | schema_name . ] object_name' [ ,'object_type' ] )
' object_name ' : Is the object to be used. object_name is either varchar or nvarchar. If object_name is varchar, it is implicitly converted to nvarchar. Specifying the database and schema names is optional.
' object_type ' Is the schema-scoped object type. object_type is either varchar or nvarchar. If object_type is varchar, it is implicitly converted to nvarchar.
--ΗΤΗ--
|
|
-
27-12-2010, 22:06
|
|
Απ: Indexed Views & Rebuild
Έχεις δίκιο για την object_id. Έτσι όπως το είδα στα γρήγορα δεν το προσεξα και το είδα σαν τριτη παραμετρο στο dm και επειδή αυτό δεν έχει το είπα αυτό τώρα που το προσεξα καλύτερα έχεις δίκιο αναφερεται στην Object_ID
Antonios Chatzipavlis
|
|
-
28-12-2010, 10:18
|
-
Wizard!
-
-

-
Μέλος από τις 17-04-2006
-
-
Δημοσιεύσεις 24
-
-
|
Απ: Indexed Views & Rebuild
spaceman:
Αν το παρακατω επιστρεφει εγγραφες, τοτε ο full text index εχει δημιουργηθει k populated κανονικα: SELECT * FROM sys.dm_fts_index_keywords(DB_ID(N'B2COnline'), OBJECT_ID(N'dbo.view_AutoCompleteAirports', N'V'))
--ΗΤΗ--
Λοιπόν, το έτρεξα και μου έφερε κανονικά ~4000 εγγραφές. Αν όμως τρέξω το script, φέρω τα δεδομένα και το τρέξω πάλι, για περίπου 1' δε φέρνει τίποτα.
Antonios Chatzipavlis:
Επίσης θα ήθελα να μας πεις αν η παρακάτω σου φέρνει εγγραφές, αν σου φέρνει θα ήθελα το αποτέλεσμα της plz.
select * from sys.dm_fts_outstanding_batches
Το έτρεξα αρχικά και δεν έφερε τίποτα... Μετά την εκτέλεση όλης της διαδικασίας κι αφού πέρασε 1' όπως και παραπάνω, έφερε μια εγγραφή:
7 6 930102354 264 0x23057DC0 0x250E8040 0x00000000 0 0 0 NO RETRY 0 0x000000000000FF7E
Το περίεργο είναι, ότι ενώ εχθές είχα αφήσει να περάσει και 1' και 30' και 2 ώρες, δεν έφερνε τίποτα. Σήμερα που δοκίμασα να τρέξω όλη τη διαδικασία πάλι απλά για να σας πω τι φέρουν οι δύο δικές σας γραμμές, φαίνεται να τρέχει κανονικά και σε μικρό χρόνο να κάνει το rebuild.
Σας ευχαριστώ και τους δύο για την πολύτιμη βοήθεια και το χρόνο σας :)
|
|
-
28-12-2010, 10:55
|
-
Wizard!
-
-

-
Μέλος από τις 17-04-2006
-
-
Δημοσιεύσεις 24
-
-
|
Απ: Indexed Views & Rebuild
Λοιπόν, συνεχίζουν τα περίεργα... Όπως καταλαβαίνετε, μέσα στη βάση δεν υπάρχει μόνο ο πίκανας Airports αλλά και διάφοροι άλλοι όπως ο Stations. Ακολουθώντας ακριβώς την ίδια διαδικασία, έχω τα εξής:
Το script του spaceman φέρνει ~3800 εγγραφές.
Το script του Αντώνη δε φέρνει τίποτα.
Το παρακάτω script επίσης δε φέρνει τίποτα ακόμα και μετά από 15': SELECT TOP 12 * FROM view_AutoCompleteStations AS FT_TBL WITH (NOLOCK) INNER JOIN
CONTAINSTABLE(view_AutoCompleteStations, *, @Keyword) AS KEY_TBL
ON FT_TBL.StationID = KEY_TBL.[KEY] ORDER BY RANK DESC; Δοκιμάζω μετά να κάνω όλη τη διαδικασία από την αρχή και πλέον δε φέρνει ούτε τα keywords... Τι κάνω λάθος...;
|
|
-
28-12-2010, 12:46
|
-
spaceman
-
-

-
Μέλος από τις 06-06-2006
-
-
Δημοσιεύσεις 65
-
-
|
Απ: Indexed Views & Rebuild
Wizard!:
Το script του spaceman φέρνει ~3800 εγγραφές.
Ο full text index εχει δημιουργηθει
Το script του Αντώνη δε φέρνει τίποτα.
Το script θα γυρισει εγγραφες, αν υπαρχει ενεργη διεργασια που δημιουργει ft index.
Το παρακάτω script επίσης δε φέρνει τίποτα ακόμα και μετά από 15': SELECT TOP 12 * FROM view_AutoCompleteStations AS FT_TBL WITH (NOLOCK) INNER JOIN
CONTAINSTABLE(view_AutoCompleteStations, *, @Keyword) AS KEY_TBL
ON FT_TBL.StationID = KEY_TBL.[KEY] ORDER BY RANK DESC;
Το create statement του ft index ειναι: CREATE FULLTEXT INDEX ON dbo.[view_AutoCompleteAirports]
.......KEY INDEX idx_AirPort_ID;
Αρα το .[KEY] του CONTAINSTABLE πρεπει να γινει JOIN στο [AirPortID]:SELECT TOP 12 * FROM view_AutoCompleteStations AS FT_TBL WITH (NOLOCK) INNER JOIN
CONTAINSTABLE(view_AutoCompleteStations, *, @Keyword) AS KEY_TBL
ON FT_TBL.Airport_ID = KEY_TBL.[KEY] ORDER BY RANK DESC; Χωρις να χρειαστει να κανεις join, μπορεις να δοκιμασεις κ το παρακατω
SELECT * FROM CONTAINSTABLE(dbo.view_AutoCompleteStations, *, N'"*put a word here*"') AS KEY_TBL --HTH--
|
|
-
28-12-2010, 13:06
|
-
Wizard!
-
-

-
Μέλος από τις 17-04-2006
-
-
Δημοσιεύσεις 24
-
-
|
Απ: Indexed Views & Rebuild
Ναι, οκ, sorry, λάθος δικό μου. Φυσικά και το AirPort_ID γίνεται JOIN στην αντίστοιχη αναζήτηση, όπως και το Station_ID στη δική του.
Μετά από αρκετό παίδεμα, κατέληξα ότι παίζει μεν, αλλά όχι σωστά δε... Δηλαδή... Αν κάνω αναζήτηση με 'ast' στα Ports, μου φέρνει μόνο την παρακάτω γραμμή όπου βρίσκει ΑΚΡΙΒΩΣ το 'ast'
City PortID PortName PortCODE Notes ASTAKOS AST ETOLOAKARNANIA (Small town)
ενώ δε μου φέρνει αυτή, που το 'ast' υπάρχει σε 2 στήλες και αρχίζουν ονομασίες από αυτό...
City PortID PortName PortCODE Notes ASTYPALEA ASY DODEKANISSOS (Port)
|
|
Σελίδα 1 από 2 (18 εγγραφές)
1
|
|
|