xarda Δημοσ. 28 Μαρτίου 2012 Δημοσ. 28 Μαρτίου 2012 Ο sql server 2005 δινει την δυνατοτητα να δημιουργήσουμε scriptakia για την δημιουργια μιας βάσης , το backup κ.τ.λ..... Στο laptop οταν εκτελώ το scriptaki createDatabaseScript.sql αποθηκευει επιτυχως την db μου στο default folder C:\Program Files\Microsoft SQL Server\MSSQL.3\MSSQL\myDatabase.mdf ομως οταν προσπαθησω να κανω το ιδιο σε αλλο Pc οπου εχει διαφορετικο Default path ΔΕΝ εκτελειται και βγαζει errors που ειναι λογικο...( υποψιαζομαι τουλαχιστον οτι αυτο φταιει ) Με ποιο τροπο θα μπορω το scriptaki Που φτιαχνω στο δικο μου pc να λειτουργει σε διαφορετικα pcs ή τουχαλιστον αν εχετε να μου προτεινετε καποιο τροπο ετσι ωστε ενα προγραμματακι να μπορει να δημιουργει την βαση σε διαφορετικα pcs εκτος απο αυτον τον τροπο.... Γενικα τα softwares που χρησιμοποιουν βασεις δεδομενων κατα την εγκατασταση με ποιο τροπο "δημιουργουν" την βαση που θα χρησιμοποιησουν;
nspyrou Δημοσ. 28 Μαρτίου 2012 Δημοσ. 28 Μαρτίου 2012 Ο sql server 2005 δινει την δυνατοτητα να δημιουργήσουμε scriptakia για την δημιουργια μιας βάσης , το backup κ.τ.λ..... Στο laptop οταν εκτελώ το scriptaki createDatabaseScript.sql αποθηκευει επιτυχως την db μου στο default folder C:\Program Files\Microsoft SQL Server\MSSQL.3\MSSQL\myDatabase.mdf ομως οταν προσπαθησω να κανω το ιδιο σε αλλο Pc οπου εχει διαφορετικο Default path ΔΕΝ εκτελειται και βγαζει errors που ειναι λογικο...( υποψιαζομαι τουλαχιστον οτι αυτο φταιει ) Με ποιο τροπο θα μπορω το scriptaki Που φτιαχνω στο δικο μου pc να λειτουργει σε διαφορετικα pcs ή τουχαλιστον αν εχετε να μου προτεινετε καποιο τροπο ετσι ωστε ενα προγραμματακι να μπορει να δημιουργει την βαση σε διαφορετικα pcs εκτος απο αυτον τον τροπο.... Γενικα τα softwares που χρησιμοποιουν βασεις δεδομενων κατα την εγκατασταση με ποιο τροπο "δημιουργουν" την βαση που θα χρησιμοποιησουν; Αναφέρεσαι σε path Microsoft SQL Server\ οπότε υποθέτω οτι παίζεις sql server ... Αν κατάλαβα καλά βάσει των όσων λες, αυτό που θες να κάνεις λέγεται Clustering. Δηλαδή ο κατακερματισμός της βάσης σε διάφορα συστήματα. ΕΔΩ Θα βρείς ένα τρόπο να φτιάξεις cluster.
xarda Δημοσ. 28 Μαρτίου 2012 Μέλος Δημοσ. 28 Μαρτίου 2012 Τι εννοεις με το "κατακερματισμος" δεν μπορώ να καταλαβω...Απλα θελω κατα την μεταφορα του προγραμματος μου something.exe και την εγκατασταση του σε αλλο pc να δημιουργει αυτοματα και την sql database Που θα χρησιμοποιησει οταν εκκινήσει την πρωτη φορα.Η βαση μου ειναι φτιαγμενη με sql server 2005 και μεσω των scripts προσπαθω να βρω καποια λύση.
At0m0 Δημοσ. 28 Μαρτίου 2012 Δημοσ. 28 Μαρτίου 2012 Στο "άλλο PC" που θα κάνεις την εγκατάσταση, είναι εγκατεστημένος ο sql server 2005;
xarda Δημοσ. 28 Μαρτίου 2012 Μέλος Δημοσ. 28 Μαρτίου 2012 Φυσικά... ομως τα paths διαφέρουν...Μου φαίνετε τοσο γελοιο απο πλευράς του sql server 2005 να εχει αλλα paths στο ενα pc και αλλα στο αλλο...Μιλάμε για καθαρή εγκατασταση του sqrver χωρις να εχω πειράξει το παραμικρό
moukoublen Δημοσ. 28 Μαρτίου 2012 Δημοσ. 28 Μαρτίου 2012 (επεξεργασμένο) > CREATE DATABASE [DatabaseNAME] ON PRIMARY ( NAME = N'DatabaseNAME', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\DatabaseNAME.mdf' , SIZE = 83072KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB ) LOG ON ( NAME = N'DatabaseNAME', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\DatabaseNAME.ldf' , SIZE = 1024KB , MAXSIZE = 2048GB , FILEGROWTH = 10%) GO Υπάρχει κάτι παρόμοιο με αυτό ^ στο script σου έτσι δεν είναι; Απλά σβήσε τα path. Άσε μονο το >CREATE DATABASE [DatabaseNAME] ___ Πάντως κάτι κου κάνω και με βολεύει αρκετά για να μεταφέρω βάσεις στον ms sql server είναι το εξής. Κάνω τη βάση που θέλω να μεταφέρω, backup. Παίρνω το αρχείο του backup και το πάω στον sql server που θέλω να μεταφέρω τη βάση και το κάνω restore. Το κάνω restore αφού πρώτα έχω φτιάξει (manual) μια βάση με το ίδιο όνομα. Δε χρειάζεται τίποτα άλλο. Απλά ανοίγω μια νέα βάση (στην περίπτωση που δεν υπάρχει ήδη δηλαδή) και μόλις ανοιχτεί κάνω restore από το backup που έχω. Και γράφονται όλα. Και data και δεδομένα. Τώρα, αν δε θες όλα τα αλλα εκτος από τα δεδομένα ναι, η λύση είναι με το generate script. Επεξ/σία 29 Μαρτίου 2012 από moukoublen
xarda Δημοσ. 29 Μαρτίου 2012 Μέλος Δημοσ. 29 Μαρτίου 2012 Πραγματι γνωρίζω τον τρόπο αυτο που προτείνεις αλλα: Θα πρέπει ήδη να έχω δημιουργήσει μια κενή βάση.Ο παραπάνω κώδικας σου οταν τον τρεχω στο sql server σαν query ΔΕΝ εκτελείται και βγάζει μνμ σφάλματος.Το ίδιο συμβαίνει οταν σβήνω και τα paths.To σωστο scriptaki που δημιουργείτε απο τον sql server για την δημιουργία μιας νέας βάσης είναι το παρακάτω: > CREATE DATABASE [myDB] ON PRIMARY ( NAME = N'myDB', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL.3\MSSQL\Backup\myDB.mdf' , SIZE = 3072KB , FILEGROWTH = 1024KB ) LOG ON ( NAME = N'myDB_log', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL.3\MSSQL\Backup\myDB_log.ldf' , SIZE = 1024KB , FILEGROWTH = 10%) GO EXEC dbo.sp_dbcmptlevel @dbname=N'myDB', @new_cmptlevel=90 GO ALTER DATABASE [myDB] SET ANSI_NULL_DEFAULT OFF GO ALTER DATABASE [myDB] SET ANSI_NULLS OFF GO ALTER DATABASE [myDB] SET ANSI_PADDING OFF GO ALTER DATABASE [myDB] SET ANSI_WARNINGS OFF GO ALTER DATABASE [myDB] SET ARITHABORT OFF GO ALTER DATABASE [myDB] SET AUTO_CLOSE OFF GO ALTER DATABASE [myDB] SET AUTO_CREATE_STATISTICS ON GO ALTER DATABASE [myDB] SET AUTO_SHRINK OFF GO ALTER DATABASE [myDB] SET AUTO_UPDATE_STATISTICS ON GO ALTER DATABASE [myDB] SET CURSOR_CLOSE_ON_COMMIT OFF GO ALTER DATABASE [myDB] SET CURSOR_DEFAULT GLOBAL GO ALTER DATABASE [myDB] SET CONCAT_NULL_YIELDS_NULL OFF GO ALTER DATABASE [myDB] SET NUMERIC_ROUNDABORT OFF GO ALTER DATABASE [myDB] SET QUOTED_IDENTIFIER OFF GO ALTER DATABASE [myDB] SET RECURSIVE_TRIGGERS OFF GO ALTER DATABASE [myDB] SET AUTO_UPDATE_STATISTICS_ASYNC OFF GO ALTER DATABASE [myDB] SET DATE_CORRELATION_OPTIMIZATION OFF GO ALTER DATABASE [myDB] SET PARAMETERIZATION SIMPLE GO ALTER DATABASE [myDB] SET READ_WRITE GO ALTER DATABASE [myDB] SET RECOVERY SIMPLE GO ALTER DATABASE [myDB] SET MULTI_USER GO ALTER DATABASE [myDB] SET PAGE_VERIFY CHECKSUM GO USE [myDB] GO IF NOT EXISTS (SELECT name FROM sys.filegroups WHERE is_default=1 AND name = N'PRIMARY') ALTER DATABASE [myDB] MODIFY FILEGROUP [PRIMARY] DEFAULT GO ομως δυστηχως και εδώ θα πρέπει να υπάρχει το path... Επίσης αρκεί να κάνω restore το αρχείο μου myBackup.BAK ( εστω αν ήδη εχει δημιουργηθει μια κενη βάση ) ;; Tα αρχεία .mdf και .ldf δεν χρειάζονται;;
moukoublen Δημοσ. 29 Μαρτίου 2012 Δημοσ. 29 Μαρτίου 2012 Ο παραπάνω κώδικας σου οταν τον τρεχω στο sql server σαν query ΔΕΝ εκτελείται και βγάζει μνμ σφάλματος. Δικό μου λάθος. Βγάλε και το ON PRIMARY (το διόρθωσα και στο post μου) Επίσης απ ότι βλέπω από το script σου, η παλιά η βάση έχει το αρχείο βάσης στο path C:\Program Files\Microsoft SQL Server\MSSQL.3\MSSQL\Backup\ και το transaction log στο path C:\Program Files\Microsoft SQL Server\MSSQL.3\MSSQL\newKiriakosBackupFolder\ ίσως στο pc του αλλου sql server να μην υπάρχουν αυτά τα directories και αυτό να δημιουργεί το πρόβλημα. (που παρεμπιπτόντως δεν καταλαβαίνω γιατί δημιουργήθηκαν τα directories 'Backup' και 'newKiriakosBackupFolder'. Εννοώ δηλαδή γιατί κατά την δημιουργία της βάσης επέλεξες custom directories και μάλιστα με αυτές τις ονομασίες) το αρχείο .mdf είναι το αρχείο τις βάσης και αυτό γίνεται restore όταν κανεις restore. Το αρχείο .ldf είναι το transaction log και το κανεις backup ξεχωριστά (αν χρειάζεσαι πράγματι να το κανεις). Τα ίδια τα αρχεία αυτά δε τα πειράζεις και δε τα μετακινείς ποτε μα ποτέ.
xarda Δημοσ. 29 Μαρτίου 2012 Μέλος Δημοσ. 29 Μαρτίου 2012 λάθος δικό μου το path...Το είχα αλλάξει χειροκίνητα κάνοντας διπλο κλικ και properties πανω στον server.Το εφτιαξα τελικά και πρέπει απο default βρίσκονται στο ίδιο path δηλαδη στο >C:\Program Files\Microsoft SQL Server\MSSQL.3\MSSQL\Backup\sd.mdf Πράγματι ΔΕΝ υπαρχει αυτο το path στα αλλα pcs αλλα για παραδειγμα υπαρχει το: C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Backup\sd.mdf Τι μπορω να κάνω;Είναι σοβαρο το πρόβλημα και δεν μπορώ να καταλάβω γιατι το κάνει αυτο o sql server... Επίσης σχετικά με το .mdf που ανέφερες οταν επιλέγω μια Db δεξι κλίκ -> tasks -> backup αποθηκεύει την βάση μου με .BAK κατάληξη και οχι .mdf...Αρα το .BAK θα κάνω restore ετσι δεν είναι;
moukoublen Δημοσ. 29 Μαρτίου 2012 Δημοσ. 29 Μαρτίου 2012 Δες τρέχει;; Πολύ περίεργο μου ακούγεται. Δοκίμασε αλλη μια φορά. Αυτή τη φορά σου αντιγράφω όλο τον κώδικα σου με τις αλλαγές που πρέπει. Δοκίμασε τον όπως είναι. > CREATE DATABASE [myDB] GO EXEC dbo.sp_dbcmptlevel @dbname=N'myDB', @new_cmptlevel=90 GO ALTER DATABASE [myDB] SET ANSI_NULL_DEFAULT OFF GO ALTER DATABASE [myDB] SET ANSI_NULLS OFF GO ALTER DATABASE [myDB] SET ANSI_PADDING OFF GO ALTER DATABASE [myDB] SET ANSI_WARNINGS OFF GO ALTER DATABASE [myDB] SET ARITHABORT OFF GO ALTER DATABASE [myDB] SET AUTO_CLOSE OFF GO ALTER DATABASE [myDB] SET AUTO_CREATE_STATISTICS ON GO ALTER DATABASE [myDB] SET AUTO_SHRINK OFF GO ALTER DATABASE [myDB] SET AUTO_UPDATE_STATISTICS ON GO ALTER DATABASE [myDB] SET CURSOR_CLOSE_ON_COMMIT OFF GO ALTER DATABASE [myDB] SET CURSOR_DEFAULT GLOBAL GO ALTER DATABASE [myDB] SET CONCAT_NULL_YIELDS_NULL OFF GO ALTER DATABASE [myDB] SET NUMERIC_ROUNDABORT OFF GO ALTER DATABASE [myDB] SET QUOTED_IDENTIFIER OFF GO ALTER DATABASE [myDB] SET RECURSIVE_TRIGGERS OFF GO ALTER DATABASE [myDB] SET AUTO_UPDATE_STATISTICS_ASYNC OFF GO ALTER DATABASE [myDB] SET DATE_CORRELATION_OPTIMIZATION OFF GO ALTER DATABASE [myDB] SET PARAMETERIZATION SIMPLE GO ALTER DATABASE [myDB] SET READ_WRITE GO ALTER DATABASE [myDB] SET RECOVERY SIMPLE GO ALTER DATABASE [myDB] SET MULTI_USER GO ALTER DATABASE [myDB] SET PAGE_VERIFY CHECKSUM GO USE [myDB] GO IF NOT EXISTS (SELECT name FROM sys.filegroups WHERE is_default=1 AND name = N'PRIMARY') ALTER DATABASE [myDB] MODIFY FILEGROUP [PRIMARY] DEFAULT GO Αν δε τρέξει αντέγραψε το λάθος που σου βγάζει. γενικότερα τα path στα οποια θα δημιουργηθούν τα αρχεία να τα καθορίζεις εσύ μονο αν έχεις απόλυτα συγκεκριμένο λόγο και ξέρεις γιατί το κανεις. Διαφορετικά άσε τον sql server να χρησιμοποιήσει τα default του. Οσο για το backup, ναι το αρχείο .bak κάνεις restore.
nspyrou Δημοσ. 29 Μαρτίου 2012 Δημοσ. 29 Μαρτίου 2012 Αν και οι δύο βάσεις είναι SQL Server 2005, γιατί, δεν κάνεις Detach τη βάση σου, κάνε copy το mdf & ldf, στο δεύτερο σύστημα, και κάνε πάλι Attach τη βάση. Εξορισμού τα MDF & LDF είναι στο ίδιο directory. Αν δεν έχεις πειράζει το configuration του δεύτερου server, θα πρέπει να σου παίξει κανονικά. Ο κανονικός και ασφαλής τρόπος είναι αυτός που σου περιγράφει βέβαια ο moukoublen, (backup τη βάση σε *.bak αρχείο και restore σε νέα, με ενεργοποιημένο το property, "override existing database"). Αλλά σε extreme καταστάσεις αφού δεν μπορείς να παίξεις με backup/restore, δες το detach/attach ...
xarda Δημοσ. 29 Μαρτίου 2012 Μέλος Δημοσ. 29 Μαρτίου 2012 Ολα οκ...Τρεχει κανονικα.Δικο μου το λάθος.. Τωρα φαίνετε πως βρήκα καποια λύση περνώντας μεταβλητές μέσα στο myScript.sql απο εδώ Η σκέψη μου είναι: 1.Στο δικό μου Pc επιλέγω την βάση μου και δεξί κλίκ tasks -> generate script -> επιλέγω το "Scripts all object in the database" -> next -> "Βρίσκω το Script Database Create Και το κάνω true Και γενικά κάνω true οτι αλλο θέλω να συμπεριληφθεί στο mySqlScript.sql και next -> επιλέγω το "Script to New Query Window" και next και finish! 2.Αφου λοιπόν δημιουργήσαμε το script για την δημιουργία της βάσης μας ΚΑΙ των πινάκων ( δύο σε ενα ) εμφανίζεται αμέσως μπροστά μας ολοκληρος ο κώδικας.Οι αλλαγές που πρέπει να γίνουν στο κώδικα αφορούν τα paths και ΜΟΝΟΝ αυτά ( διοτι το .exe αρχείο θα ψάξει να βρεί απο το connection string το όνομα της βάσης που του έχουμε δώσει εξαρχής και ετσι δεν πρέπει να αλλάξει ουτε στο script!!! ) αρα λοιπόν θα πρέπει να αλλάξω τα paths οπου αποθηκεύονται το .mdf και το _log.ldf καθώς διαφέρουν απο pc σε pc. Αν για παράδειγμα στο δικό μου pc αποθηκεύονται στο: c:\Program Files\Microsoft SQL Server\MSSQL.3\MSSQL\DATA\*****.mdfκαι c:\Program Files\Microsoft SQL Server\MSSQL.3\MSSQL\DATA\*****_log.ldf μπορεί στο αλλο Pc να αποθηκεύονται στο: c:\Program Files\Microsoft SQL Server\MSSQL\MSSQL\DATA\*****.mdf και c:\Program Files\Microsoft SQL Server\MSSQL\MSSQL\DATA\*****_log.ldf Σύμφωνα με αυτό βλέπω πως μπορούμε να περάσουμε μεταβλητές σε .sql αρχεία τα οποία εκτελουνται απο batch files. Αρα για να αλλάξουμε το path για τα .mdf και .ldf files αρκεί στο batch file να δώσω: sqlcmd -v varMDF="c:\Program Files\Microsoft SQL Server\MSSQL\MSSQL\DATA\*****.mdf" varLDF="c:\Program Files\Microsoft SQL Server\MSSQL\MSSQL\DATA\*****.mdf" -i C:\createDBscript.sql οπότε θα αλλάξω και τα αντίστοιχα στον κώδικα καθώς εχω δημιουργήσει τις μεταβλητες που θα περαστουν ως: USE [master] GO IF NOT EXISTS (SELECT name FROM sys.databases WHERE name = N'myDB') BEGIN CREATE DATABASE [myDB] ON PRIMARY ( NAME = N'myDB', FILENAME = N'$(varMDF)' , SIZE = 3072KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB ) LOG ON ( NAME = N'myDB_log', FILENAME = N'$(varLDF)' , SIZE = 1024KB , MAXSIZE = 2048GB , FILEGROWTH = 10%) COLLATE Greek_CI_AS END GO EXEC dbo.sp_dbcmptlevel @dbname=N'myDB', @new_cmptlevel=90 GO . . . . . 3.Αφου λοιπόν ολοκληρωθεί και αυτό μένει να αποθηκεύσουμε το script μας στο path που έχουμε δώσει στο batch αρχείο μας δηλαδή στο C:\createDBscript.sql επιλέγοντας το save και δίνοντας το όνομα createDBscript.sql. 4.Aφου γίνουν ολα αυτα στο δικο μας Pc μεταφερουμε τα αρχεία στο C:\ του αλλου pc-ioυ και τρέχουμε το myBAT.bat file... Αν λοιπον κατα την εκτέλεση οι μεταβλητές "περασαν" σωστα απο το .bat αρχείο στο createDBscript.sql ( δηλαδή εχει επιλεχθεί το κατάλληλο path ) τότε λογικά θα πρέπει να δημιουργηθεί η βάση και να φαίνετε στο sql server κάνοντας ενα refresh. ( τωρα σε περίπτωση που θέλουμε να περναμε εμεις τα paths χειροκίνητα που είναι και ο πίο σωστος τρόπος τοτε σε ενα EditBox1 θα δώσω το Path για τα .mdf files και σε ενα EditBox2 θα δώσω το Path για τα .ldf files.Τα paths αυτα με την χρήση ενος Memo1 component θα "περνούν" ( με μία fputs στο .bat αρχείο ) και με μία system(C:\myBAT.bat); εκτελούμε το batch file ) Αν ΔΕΝ τρεξει τοτε σωστα τοτε αρχίζουμε τα καντίλια πίνουμε καμια γουλια καφε ανάβουμε ενα τσιγάρο και βαζουμε ενα τραγουδακι για διάλειμα 5-10 λεπτών!!!! ( νομίζω πως σωστα το σκέφτηκα τι λες;;; ) Τελικά σωστά το σκέφτηκα...Το δοκίμασα στο δικό μου Pc και τρέχει κανονικα!!!!ΟΟΟΟΛΛΛΛΕΕΕΕΕ!!!!
Directx Δημοσ. 29 Μαρτίου 2012 Δημοσ. 29 Μαρτίου 2012 (επεξεργασμένο) Για SQL Server 2005 δεν μπορώ να πω κάτι, αλλά (για την ιστορία πάντα -αφού βρήκες λύση) όσον αφορά την εγκατάσταση ACCESS MDB, προσωπικά προτιμώ την εγκατάσταση τους (deployment) από τα resource ενσωματωμένα στο εκτελέσιμο του προγράμματος. Επεξ/σία 29 Μαρτίου 2012 από Directx
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα