Basis data ujung belakang:
[Akses Microsoft]
Dan
[Microsoft SQL Server]
Setelah penggantian, kode ASP harus memperhatikan beberapa tempat yang perlu diubah:
[1] Masalah koneksi (contoh)
[Akses Microsoft]
constr = "DBQ=c:dataclwz.mdb; DRIVER={Microsoft Access Driver (*.mdb)}"
[Microsoft SQL Server]
constr = "DRIVER={SQL Server};SERVER=host;DATABASE=mydata;uid=sa;pwd="
[2] Fungsi serupa (contoh)
[1]DATEDIFF(bagian tanggal, tanggal mulai, tanggal akhir)
Opsi parameter "datepart" adalah sebagai berikut:
Deskripsi Pengaturan————————————
[Akses Microsoft]
tahunyyyy
kuartal q
bulan m
jumlah hari dalam tahun y
hari
Hari dalam seminggu w
Zhou ww
jam h
menit
detik
[Microsoft Sql Server]
tahun yy, yyyy
seperempat qq, q
bulan mm, m
hari dalam setahun dy, y
hari hh, d
minggu minggu, ww
jam hh
menit mi, n
ss kedua, s
milidetik ms
----------------------
Pada dasarnya sama saja, namun perhatikan saat menulis,
[Microsoft Access] Tambahkan tanda kutip, seperti: dateiff('d',enddate,'2004/08/01')
[Microsoft Sql Server] tidak diperlukan, seperti: dateiff(d,enddate,'2004/08/01')
[2][Microsoft Access] dapat menggunakan fungsi konversi tipe data seperti cstr, dan
Di [Microsoft Sql Server], gunakan fungsi konversi atau transmisi, seperti:
mengkonversi(varchar,[jumlah]) dll.
[3] [Server Microsoft Sql]
Untuk mendapatkan waktu saat ini, gunakan getdate, dll...
[3] Pernyataan
[Microsoft SQL Server]
tersedia
KASUS
KAPAN LALU
KAPAN LALU
...
KALAU TIDAK
AKHIR
pernyataan, sementara
[Akses Microsoft]
Tidak didukung.
[Microsoft Access] juga tidak mendukung pernyataan antar
[Microsoft Sql Server] dapat ditulis seperti ini:
[tanggal] antara @tanggal1 dan @tanggal2
[4] Tabel kueri
[Microsoft SQL Server]
Itu dapat ditanyakan dengan menggabungkan tiga tabel atau lebih, dan
[Akses Microsoft]
Tampaknya hanya dua tabel yang dapat digabungkan untuk kueri (untuk dikonfirmasi oleh otoritas).
Dan [Microsoft Sql Server] dapat menggunakan konektor "*=" dan "=*". [5] Bagilah dengan nol soal
[Akses Microsoft]
Ketika pembaginya nol, catatan yang relevan secara otomatis dibuang, dan
[Microsoft SQL Server]
Kesalahan akan dilaporkan dan kueri akan dihentikan. Hapus kode:
[Akses Microsoft]
Anda dapat menulisnya seperti ini: hapus * dari [tabel]
[Microsoft SQL Server]
Hanya dapat ditulis seperti ini: hapus dari [tabel]
Sering kali kesalahan akan dilaporkan
____________________________
Tanggal saat ini:
[Akses Microsoft]
Gunakan tanggal()
[Microsoft SQL Server]
Menggunakan getdate(), jika database dapat mengubah tipenya, Anda dapat menambahkan ini ke kode ASP:
jika inStr(constr,"Microsoft Access") > 0 maka
sqlstr=[Microsoft Access][kode sql]
kalau tidak
sqlstr=[Microsoft Sql Server][kode sql]
berakhir jika
(constr--string koneksi)
Dengan cara ini, meskipun database diubah, tidak perlu mengubah kueri database dan memperbarui kode.
Selain itu: ada catatan bidang benar dan salah di akses, tetapi hanya ada smallint di sql. Sejalan dengan itu, jika ada "nama bidang = benar" di akses, maka harus diubah menjadi "nama bidang = 1" di sql.
Sebagian besar program ASP gratis di Internet menggunakan database akses. Namun, database akses, sebagai sistem database yang berdiri sendiri berukuran kecil dan menengah, sering kali kewalahan ketika digunakan untuk aplikasi situs web dengan jumlah kunjungan dan data yang besar. Secara umum diyakini bahwa kinerja database akses akan mulai menurun secara signifikan ketika melebihi 50M. Setelah melebihi 100M, masalah kesalahan dan pengoperasian yang lambat akan menjadi lebih menonjol. Meskipun kami dapat melakukan yang terbaik untuk mengoptimalkan dari sudut pandang program untuk meningkatkan kinerja seperti yang kami lakukan setelah Dongwang 7.0, hal ini tidak dapat menyelesaikan masalah secara mendasar.
Saat ini, mungkin menggunakan database Microsoft SQL Server adalah cara yang paling mungkin. Tentu saja, Anda juga dapat menggunakan database lain seperti Oracle, MySQL, dll., tetapi sebagai penulisan ulang, karena keduanya adalah produk Microsoft, menulis ulang ke dalam SQL Server harus menjadi cara yang paling menghemat tenaga kerja.
1. Prasyarat untuk menulis ulang:
SQL Server2000 telah diinstal pada sistem dan patch SP3 telah diterapkan; Akses di suite Office telah diinstal; gunakan editor yang mendukung pengeditan teks biasa dan memiliki tampilan nomor baris tentu saja FrontPage2003 juga dapat digunakan, tetapi tampilan nomor baris pada versi sebelumnya tidak terlalu mudah digunakan.
Persyaratan kemampuan pribadi: Mampu memahami sintaks dasar ASP, mengakses operasi database, dan operasi dasar SQL Server Enterprise Manager.
2. Secara umum, ada dua situasi untuk persiapan database
:
1. Program ini menyediakan format database SQL: ada file MDF, atau file skrip SQL (akhiran .sql) untuk membuat database SQL disediakan.
Jika ada file mdf, Anda bisa langsung melampirkannya menggunakan Enterprise Manager. Jika file skrip sql disediakan, gunakan Enterprise Manager untuk membuat database sql sendiri, lalu gunakan query analyser di Enterprise Manager untuk menjalankannya. skrip untuk membuat tabel database.
Basis data yang dibuat dengan cara ini pada dasarnya tidak perlu ditulis ulang.
2. Kebanyakan dari mereka tidak menyediakan database SQL atau file skrip. Saat ini, Anda harus melakukannya sendiri. Ini juga merupakan masalah utama yang dipecahkan oleh postingan kami. Umumnya, program seperti itu akan menyediakan database akses, sehingga Anda dapat menggunakan Enterprise Manager untuk mengimpor database akses. Setelah mengimpor, Anda perlu menulis ulang hal-hal berikut:
Dibandingkan dengan akses asli, tulis ulang bagian berikut:
(1) Tabel database SQL tidak memiliki bidang otomatis, sehingga bidang otomatis asli dalam akses diubah menjadi bidang biasa dan perlu diubah secara manual ke jenis identifikasi, dengan penambahan 1.
(2) Untuk semua kolom waktu, jika nilai default ditentukan, nilainya harus sekarang() dan perlu diubah menjadi getdate()
(3) Nilai default bidang asli umumnya tidak dimasukkan secara otomatis dan perlu ditambahkan secara manual terhadap bidang tabel asli.
(4) Karena database yang berbeda, banyak jenis bidang akses dan sql berubah setelah konversi. Misalnya, bidang "apakah" yang asli akan diubah menjadi bit atau int, bidang memo akan diubah menjadi teks panjang, bidang teks akan diubah menjadi teks panjang. dikonversi ke varchar, dll., secara umum tidak akan mempengaruhi pengoperasian program. Jika ada masalah, kita akan membahasnya pada bagian penulisan ulang program di bawah ini.
(5) Jika Anda ingin menggunakan program Untuk SQL yang menggunakan prosedur tersimpan, maka Anda harus memiliki cara untuk membuat database SQL dalam program itu sendiri: memiliki file database SQL sendiri, atau skrip sql, jika tidak, gunakan import The metode database akses tidak dapat membuat prosedur tersimpan, jadi sebaiknya tinggalkan versi program Untuk SQL ini, gunakan versi program For Access yang sama, impor database akses, lalu gunakan metode penulisan ulang berikut untuk mengubahnya ke versi SQL memprogram diri Anda sendiri.
3. Untuk menulis ulang string koneksi,
silakan merujuk ke bagian Dongwang ini, yaitu masing-masing untuk akses dan SQL.
DimConnStr
Jika IsSqlDataBase = 1 Maka
'Parameter koneksi database sql: nama database, kata sandi pengguna, nama pengguna, nama koneksi (gunakan lokal secara lokal, gunakan IP di luar negeri)
Redupkan SqlDatabaseName, SqlPassword, SqlUsername, SqlLocalName
SqlDatabaseName = "dvbbs7"
Kata Sandi Sql = ""
SqlNama Pengguna = "dvbbs"
SqlLocalName = "(lokal)"
ConnStr = "Penyedia = Sqloledb; ID Pengguna = " & SqlUsername & "; Kata Sandi = " & SqlPassword & "; Katalog Awal = " & SqlDatabaseName & "; Sumber Data = " & SqlLocalName & ";"
Kalau tidak
'Bagi pengguna gratis, silakan ubah alamat database dan nama database di direktori data sesuai, misalnya ubah dvbbs6.mdb menjadi dvbbs6.asp
'http://www.downcodes.com/
Db = "data/fengerqingqing.mdb"
ConnStr = "Penyedia = Microsoft.Jet.OLEDB.4.0;Sumber Data = " & Server.MapPath(db)
Akhiri Jika
Pada Kesalahan Lanjutkan Berikutnya
Setel samb = Server.CreateObject("ADODB.Connection")
conn.open ConnStr
Tentu saja jika Anda menggunakan SQL, pernyataan akses dapat dihapus, yaitu setelah else dan sebelum kesalahan dilanjutkan selanjutnya, menjadi seperti ini:
Redupkan ConnStr
'Parameter koneksi database sql: nama database, kata sandi pengguna, nama pengguna, nama koneksi (gunakan lokal secara lokal, gunakan IP di luar negeri)
Redupkan SqlDatabaseName, SqlPassword, SqlUsername, SqlLocalName
SqlDatabaseName = "dvbbs7"
Kata Sandi Sql = ""
SqlNama Pengguna = "dvbbs"
SqlLocalName = "(lokal)"
ConnStr = "Penyedia = Sqloledb; ID Pengguna = " & SqlUsername & "; Kata Sandi = " & SqlPassword & "; Katalog Awal = " & SqlDatabaseName & "; Sumber Data = " & SqlLocalName & ";"
Pada Kesalahan Lanjutkan Berikutnya
Setel samb = Server.CreateObject("ADODB.Connection")
conn.open ConnStr
juga bisa lebih ringkas dan ditulis seperti ini:
Setel samb = Server.CreateObject("ADODB.Connection")
conn.open "Penyedia = Sqloledb; ID Pengguna = sa; Kata Sandi = 1234567; Katalog Awal = dvbbs7; Sumber Data = (lokal);"
Tulis ulang nama database, sumber data, pengguna, dan kata sandi sesuai dengan situasi Anda yang sebenarnya.
4. Penulisan ulang program
Ada dua situasi:
1. Jika anda beruntung dan mendapatkan program For SQL, maka jika tidak ada kendala pada proses pembuatan database diatas maka pada dasarnya program dapat berjalan memodifikasinya tidak dibahas dalam postingan ini.
2. Dalam kebanyakan kasus, program itu sendiri adalah For Access. Perbedaan dari program For SQL terutama adalah pernyataan query SQL yang digunakan dalam program tersebut. Perhatikan bahwa pernyataan kueri SQL adalah bagian tak terpisahkan dari aplikasi database. Sintaks yang digunakan oleh program baik itu Untuk SQL atau Untuk Aceess kira-kira sama, tetapi ada beberapa perbedaan halus. Perbedaan inilah yang membuat program ini tidak universal, dan apa yang kita butuhkan Konten utama modifikasi. Bagian-bagian yang umumnya perlu dimodifikasi adalah sebagai berikut:
(1) Masalah fungsi waktu: Fungsi waktu database SQL berbeda dengan fungsi akses. Fungsi yang paling umum adalah untuk mendapatkan waktu saat ini. Oleh karena itu, dimanapun now() digunakan dalam klausa Where, maka harus diubah menjadi getdate(); perhatikan bahwa fungsi now() juga harus digunakan dalam program asp itu sendiri pertanyaan atau pernyataan eksekusi Pastikan untuk tidak mengubahnya.
(2) Fungsi perbandingan waktu: dateiff('d','time1','time2') Ini adalah format yang digunakan untuk permintaan akses. Tanda kutip di SQl harus dihilangkan pada saat yang sama, # dapat ditambahkan sebelum dan setelah format waktu. Ini juga perlu dihapus. Demikian pula, ini juga mengacu pada pernyataan sql, dan pernyataan asp harus tetap utuh.
(3) Representasi nilai nol: Dalam akses, menilai nilai nol umumnya dinyatakan dengan apakah ="", tetapi ini sering kali salah dalam SQL. Jika Anda mengalami masalah kesalahan atau program tidak berjalan normal, Anda dapat mengubahnya untuk menilai seperti ini :di mana (namanya nol)
(4) Penilaian nilai benar dan salah: Anda dapat menggunakan =true dan =false untuk menilai akses, tetapi ini akan membuat kesalahan dalam SQL. Oleh karena itu, dalam kueri SQL atau pernyataan eksekusi, jenis penilaian ini harus diubah menjadi =1 dan =0 masing-masing. Catatan: Meskipun beberapa program menulis = "true", karena tanda kutip, bidang ini bertipe karakter. Anda tidak dapat mengubahnya menjadi =1, biarkan saja apa adanya.
Di atas adalah tempat yang lebih umum untuk menulis ulang, dan ada beberapa tempat yang kurang umum. Jika Anda menemukannya, Anda dapat membalas di sini untuk mendiskusikannya.
5. Debugging program
Disarankan untuk menggunakan editor dengan nomor baris karena penulisan ulang di atas tidak mungkin dilakukan dengan mencari kode sumber program secara langsung, dan sulit untuk menemukan semuanya.
Metode yang saya terapkan secara umum adalah sebagai berikut: setelah penulisan ulang database selesai, program langsung di-debug. Setelah terjadi kesalahan, lihat pesan kesalahan dan temukan baris kode dari file yang sesuai Misalnya, pernyataan kesalahannya adalah: conn.execute(sql) , tetapi kalimat ini sendiri tidak salah. Penyebab kesalahannya adalah string sql di dalamnya ke metode modifikasi program yang disebutkan di atas.
Setelah database diimpor, kolom yang ditambahkan secara otomatis perlu ditulis ulang, dan semua tipe numerik perlu ditambah panjangnya.
Semua nilai default hilang. Terutama tipe numerik dan tipe tanggal.
Semua sekarang(), waktu(), tanggal() harus diubah menjadi getdate().
Semua tanggaliff('d', waktu1, waktu2) harus diubah menjadi tanggaliff(hari, waktu1, waktu2).
Ada kemungkinan beberapa tipe benar/salah tidak dapat digunakan dan harus diubah menjadi 1/0.
Jenis komentar harus digunakan melalui cast (kolom sebagai varchar).
CursorType perlu diubah menjadi 1, yaitu parameter numerik pertama harus diberikan sebagai 1 saat membuka database, jika tidak, catatan mungkin tidak ditampilkan sepenuhnya.
Saatmengonversi isnull(rowname) ke rowname = null
, tipe penomoran otomatis di database ACCESS tidak disetel ke tipe penomoran otomatis oleh SQL Server.
Selama konversi, SQL SERVER default ke tipe smalldatetime untuk bidang terkait tanggal. Yang terbaik adalah mengubahnya ke tipe datetime, karena tipe datetime memiliki rentang yang lebih besar daripada tipe smalldatetime. Terkadang saat menggunakan tipe tanggalwaktu kecil, konversi gagal, namun saat menggunakan tipe tanggalwaktu, konversi berhasil.
Pernyataan SQL yang digunakan untuk mengoperasikan kedua database tidak sama persis. Misalnya: saat menghapus record di database ACCESS, gunakan: "hapus * dari pengguna di mana id=10", sedangkan saat menghapus database SQL SERVER, gunakan: " hapus pengguna di mana id=10".
Fungsi tanggal berbeda. Saat memproses database ACCESS, fungsi seperti tanggal() dan waktu() dapat digunakan. Namun, saat memproses database SQL SERVER, hanya fungsi seperti tanggaliff dan dateadd dapat digunakan, tetapi tidak dapat digunakan tanggal(), waktu() dan fungsi lainnya.
Saat memproses database ACCESS, beberapa fungsi VB, seperti fungsi cstr(), dapat digunakan secara langsung dalam pernyataan sql, namun saat memproses database SQL SERVER, fungsi tersebut tidak dapat digunakan.
Tabel berikut ini membandingkan database Microsoft Access (database Microsoft Access: Kumpulan data dan objek, seperti tabel, kueri, atau formulir, terkait dengan topik atau tujuan tertentu. Mesin database Microsoft Jet digunakan untuk mengelola data.) dan proyek Microsoft Access (proyek Microsoft Access: File akses yang tersambung ke database Microsoft SQL Server dan digunakan untuk membuat aplikasi klien/server. File proyek tidak berisi data atau objek berbasis data apa pun (seperti tabel atau tampilan). Karakteristik bidang tipe data. Tipe data meliputi Boolean, Integer, Long, Mata Uang, Tunggal, Ganda, Tanggal, String, dan Varian (default)).
Tipe Data Microsoft Access Tipe Data SQL Server Ya/Tidak (Tipe data Ya/Tidak: Tipe data bidang yang digunakan untuk bidang dengan hanya dua kemungkinan nilai (seperti Ya atau Tidak, Benar atau Salah). Nilai nol tidak diperbolehkan.) bit (tipe data bit: Dalam proyek Access, tipe data yang menyimpan nilai 1 atau 0. Menerima nilai bilangan bulat selain 1 dan 0, namun selalu menafsirkannya sebagai 1.)
Angka (Tipe data angka: Tipe data bidang dalam database Microsoft Access yang digunakan untuk data numerik yang akan digunakan dalam operasi matematika. Namun, jika Anda ingin menampilkan atau menghitung nilai moneter, sebaiknya gunakan tipe data Mata Uang.) (byte) tinyint (tipe data tinyint: tipe data satu byte (8-bit) dalam proyek Access, digunakan untuk menyimpan bilangan bulat mulai dari 0 hingga 255.)
Angka (integer) smallint (tipe data smallint: tipe data 2 byte (16-bit) dalam proyek Access, menyimpan angka antara -2^15(-32,768) dan 2^15-1(32,767) .)
Nomor (bilangan bulat panjang) int (tipe data int: tipe data 4-byte (32-bit) dalam proyek Access, menyimpan nilai antara -2^31(-2,147,483,648) dan 2^31-1(2,147,483,647) nomor .)
Angka (tipe titik mengambang presisi tunggal) nyata (tipe data nyata: Dalam proyek Access, tipe data numerik perkiraan dengan presisi 7 digit, nilai positif berkisar antara 1,18E-38 hingga 3,40E+38, nilai negatif rentang nilainya kira-kira dari -1,18E-38 hingga -3,40E+38, dan bisa juga 0).
(Tidak ada tipe data yang setara) bigint (tipe data bigint: tipe data 8 byte (64-bit) dalam proyek Access, disimpan antara -2^63 (-9,223,372,036,854,775,808) dan 2^63-1 (9,223,372,036,854,775,807) ).
Angka (titik mengambang presisi ganda) float (tipe data float: Dalam proyek Access, tipe data perkiraan numerik dengan presisi 15 digit. Kisaran nilai positif yang disimpannya kira-kira dari 2.23E-308 hingga 1.79E+ 308, rentang nilai negatifnya kira-kira dari -2,23E-308 hingga -1,79E+308, bisa juga 0).
mata uang (tipe data "mata uang": Tipe data dalam database Microsoft Access yang digunakan untuk penghitungan terkait mata uang atau penghitungan titik tetap yang mengutamakan keakuratan.) uang (tipe data uang: dalam proyek Access, digunakan untuk menyimpan mata uang Data jenis nilainya, rentang nilainya dari -922.337.203.685.477.5707 hingga 922.337.203.685.477.5807, akurasinya sepersepuluh ribu unit mata uang.)
smallmoney (tipe data smallmoney: tipe data yang menyimpan nilai mata uang dalam proyek Access, rentang nilainya adalah dari - 214,748.3648 hingga 214,748.3647, dengan akurasi sepersepuluh ribu unit moneter. Saat nilai uang kecil ditampilkan, nilai tersebut dibulatkan menjadi dua tempat desimal.)
Desimal/Numerik (tipe data desimal (Akses database): Tipe data numerik yang tepat digunakan untuk menyimpan nilai dari -10^38-1 hingga 10^38-1. Rentang numerik (total digit maksimum) dan presisi (titik desimal) dapat ditentukan Jumlah digit maksimum di sebelah kanan). ) desimal (tipe data desimal (proyek Akses): Tipe data numerik yang tepat digunakan untuk menyimpan nilai dari -10^38-1 hingga 10^38-1. Rentang numerik (maksimum total digit) dapat ditentukan angka) dan presisi (jumlah digit maksimum di sebelah kanan koma desimal).)
numerik (tipe data numerik: Dalam proyek Access, tipe data numerik yang tepat dengan nilai dari -10^38 -1 hingga 10^38-1. Dapat Menentukan rentang numerik (jumlah digit maksimum) dan presisi (jumlah digit maksimum di sebelah kanan koma desimal).
Tanggal/Waktu (tipe data "Tanggal/Waktu": tipe data dalam database Access, digunakan untuk menyimpan informasi tanggal dan waktu.) datetime (tipe data datetime: Dalam proyek Access, tipe data tanggal dan waktu, mulai dari 1753 Dari 1 Januari hingga 31 Desember 9999, keakuratannya adalah tiga per seratus detik, atau 3,33 milidetik)
smalldatetime (tipe data smalldatetime: tipe data tanggal dan waktu dalam proyek Access, keakuratannya tidak sebaik waktu datetime. Data tipe. Rentang nilai data adalah dari 1 Januari 1900 hingga 6 Juni 2079, dengan akurasi satu menit).
Tipe data AutoNumber ("AutoNumber": Tipe data bidang dalam database Microsoft Access yang secara otomatis menyimpan nomor unik untuk setiap catatan ketika catatan baru ditambahkan ke tabel. Tiga jenis Nomor dapat dihasilkan: nomor urut, nomor acak, dan sinkron ID replikasi ) (bertambah) int (tipe data int: tipe data 4 byte (32-bit) dalam proyek Access, disimpan di -2^31 (-2,147,483,648) dan 2 ^31-1(2,147,483,647)) ( atribut Identitas didefinisikan).
Teks (Tipe data ("Teks"): Tipe data bidang dalam database Microsoft Access. Tipe data "Teks" dapat berisi hingga 255 karakter, atau jumlah karakter yang lebih kecil yang ditentukan oleh properti FieldSize.) (n) varchar( n ) (tipe data varchar(n): Tipe data dengan panjang variabel dalam proyek Access dengan panjang maksimum 8.000 karakter ANSI.)
nvarchar(n) (nvarchar(n) tipe data: Dalam proyek Access, data dengan panjang variabel A tipe yang dapat berisi hingga 4.000 karakter Unicode. Karakter Unicode menempati dua byte per karakter dan mendukung semua karakter internasional.)
Keterangan ("Keterangan" tipe data: tipe data bidang dalam database Microsoft Access. Bidang "Keterangan" bisa berisi hingga 65.535 karakter.) teks (tipe data teks: tipe data panjang variabel dalam proyek Access, Dapat menyimpan hingga 2^31-1(2.147.483.647) karakter; panjang default adalah 16).
Objek OLE Tipe data ("Objek OLE": Salah satu tipe data untuk bidang yang digunakan dalam objek yang dibuat dalam aplikasi lain yang bisa ditautkan atau disematkan (dimasukkan) ke dalam database Access.) gambar (tipe data gambar: Di Access Dalam proyek , tipe data dengan panjang variabel dapat menyimpan hingga 2^31-1 (2,147,483,647) byte data biner. Tipe data gambar digunakan untuk menyimpan BLOB (objek besar biner), seperti gambar, dokumen, suara, dan file. kode yang dikompilasi.)
ID replikasi sinkron (alias Pengidentifikasi Unik Global (GUID): Di database Access, bidang 16 byte digunakan untuk membuat pengidentifikasi unik untuk replikasi sinkron. GUID digunakan untuk mengidentifikasi replika, kumpulan replika, tabel, rekaman, dan objek lainnya. Di Akses database, GUID mengacu pada ID replikasi sinkron (GUID)) pengidentifikasi unik (tipe data pengidentifikasi unik: Dalam proyek Access, pengidentifikasi unik global (GUID) 16 byte.) (Hanya berlaku untuk SQL Server 7.0 atau lebih tinggi. versi lebih tinggi)
hyperlink tipe data ("hyperlink": Tipe data bidang database Access yang menyimpan alamat hyperlink. Alamat bisa berisi hingga empat bagian dan ditulis dalam format sintaks berikut: displaytext#address#subaddress#.) char (tipe data char : dalam proyek Access, tipe data dengan panjang tetap yang bisa berisi hingga 8.000 karakter ANSI. ),
nchar (tipe data nchar: Dalam proyek Access, tipe data dengan panjang tetap yang bisa berisi hingga 4.000 karakter Unicode. Masing-masing Unicode karakter menempati dua byte, dan mendukung semua karakter internasional), varchar, nvarchar (Atribut Hyperlink diatur ke Ya).
(Tidak ada tipe data yang setara) varbinary (tipe data varbinary: Tipe data dengan panjang variabel dalam proyek Access yang dapat menyimpan hingga 8.000 byte data biner.)
(Tidak ada tipe data yang setara) smallint (tipe data smallint: tipe data 2 byte (16-bit) dalam proyek Access, disimpan antara -2^15(-32,768) dan 2^15-1(32,767) ).
(Tidak ada tipe data yang setara) stempel waktu (tipe data stempel waktu: Dalam proyek Access, tipe data yang diperbarui secara otomatis setiap kali baris disisipkan atau diperbarui. Nilai dalam kolom stempel waktu bukanlah data waktu-tanggal, melainkan biner(8) atau varbinary (8), menunjukkan urutan modifikasi data).
(tidak ada tipe data yang setara) charnchar
(Tidak ada tipe data yang setara) sql_variant (tipe data sql_variant: tipe data dalam proyek Access yang menyimpan nilai beberapa tipe data selain tipe teks, ntext, gambar, stempel waktu, dan sql_variant. Dalam kolom, parameter, variabel, atau digunakan dalam nilai kembalian dari fungsi yang ditentukan pengguna).
(Tidak ada tipe data yang setara) Ditentukan pengguna (Tipe data yang ditentukan pengguna: Dalam database Microsoft SQL Server, definisi tipe data yang terdapat dalam kolom diperbolehkan untuk ditentukan oleh pengguna menggunakan definisi tipe data sistem yang ada. Aturan dan nilai default hanya dapat terikat ke Ditetapkan ke tipe data yang ditentukan pengguna. )
Catatan Dalam proyek Access atau database SQL Server, awalan "n" adalah singkatan dari "negara/wilayah", yang berarti tipe data ini mendukung Unicode. . Di database Access, semua kolom teks diaktifkan Unicode secara default.
Masalah yang perlu Anda perhatikan saat mengonversi ACCESS ke SQL
2006-2-13 16:01:20
Banyak teman yang ingin menggunakan metode pemrograman database SQL2000, tetapi mereka kesulitan karena mereka sedang mempelajari ACCESS dan hanya memiliki sedikit pemahaman tentang SQL. Di sini saya memberi Anda referensi berikut---Metode dan tindakan pencegahan untuk mengubah ACCESS menjadi SQL2000. , Pertama-tama, yang saya bicarakan adalah mengkonversi antara ACCESS2000 dan SQL2000. Saya belum mencoba yang lain. Saya harap Anda dapat bereksperimen lebih banyak, dan pasti ada caranya;
2. Metode konversi
1. Buka "Sumber Basis Data" di "Alat Administratif" di bawah "Panel Kontrol";
2. Klik "Tambah" untuk menambahkan sumber data baru, dan pilih "DriverdomicrosoftAccess" pada kolom pilihan.
(*.mdb)", sebuah kotak akan muncul setelah selesai.
Masukkan nama yang ingin Anda tulis di "Sumber Basis Data". Saya beri nama "ABC", menandakan tidak perlu diisi. Lalu, tekan pilihan di bawah untuk menemukan alamat Database Anda dan pilihannya (catatan, harap buat cadangan database ACCESS Anda terlebih dahulu), lalu konfirmasi.
Sumber data dibuat di sini, dan yang tersisa hanyalah konversi.
3. Buka SQL2000 Enterprise Manager, masukkan database, dan buat database kosong baru "ABC";
4. Pilih database yang baru dibuat, klik kanan mouse, pilih "Impor Data" di bawah "Semua Tugas", dan klik "Berikutnya" untuk melanjutkan;
5. Pilih "DriverdoMicrosoft Access (*.mdb)" di daftar drop-down sumber database. Di "User/System DSN", pilih "ABC" yang baru saja Anda tambahkan dan klik "Next";
6. "Tujuan" tidak perlu diubah. Pilih server (biasanya mesin Anda sendiri "lokal", Anda juga dapat memilih alamat server atau alamat LAN untuk menentukan apakah izin Anda dapat beroperasi), "Gunakan otentikasi WINDOWS" berarti menggunakan Untuk operasi identitas administrator sistem Anda sendiri, "Gunakan verifikasi operasi identitas SQL" dapat digunakan untuk operasi situs web, dan yang terakhir disarankan;
7. Setelah memilih "Gunakan verifikasi operasi identitas SQL", isi nama pengguna dan kata sandi Anda. Saya memilih nomor default sistem "sa" dan "****". " Langkah selanjutnya";
8. Ada dua pilihan tunggal pada langkah ini, "Salin tabel dan tampilan dari sumber data" dan "Gunakan perintah kueri untuk menentukan data yang akan ditransfer". Pilih yang pertama dan klik "Berikutnya" untuk melanjutkan;
9. Tabel database ACCESS Anda akan muncul di sini. Klik "Pilih Semua" dan lanjutkan ke langkah berikutnya;
10. "DTS Import/Export Wizard", lihat bahwa "Run Now" dipilih dan klik "Next".
11. Tekan "Selesai" untuk melanjutkan;
12. Pada langkah ini, Anda akan melihat data Anda sedang diimpor ke SQL2000. Jika muncul tulisan "XXX tabel telah berhasil diimpor ke database", dan ada tanda centang hijau di depan semua tabel, berarti semua data telah berhasil diimpor ke database. berhasil diimpor. Jika terjadi masalah selama proses atau ada tanda * merah di depan tabel, berarti tabel tersebut tidak berhasil diimpor. Saat ini, Anda perlu kembali dan memeriksa apakah operasi Anda sudah
benar . Modifikasi data
1. Karena tidak ada "penomoran otomatis" di SQL2000, bidang yang Anda atur dengan "penomoran otomatis" akan menjadi bidang yang tidak kosong. Dalam hal ini, Anda harus mengubah bidang ini secara manual dan memilih "Ya" untuk "Tandai". seed adalah "1", kenaikannya adalah "1",
2. Selain itu, setelah mengonversi ACCESS2000 ke SQL2000, bidang dengan atribut asli "ya/tidak" akan diubah menjadi "bit" yang tidak kosong. Saat ini, Anda harus memodifikasinya ke atribut yang Anda inginkan;
3. Selain itu, setiap orang harus memperhatikan pemahaman fungsi waktu. Ada banyak perbedaan antara ACCESS dan SQL.
4. Permasalahan lapangan terkait
1. Saat mengonversi tipe penomoran otomatis di database ACCESS, sqlserver tidak menyetelnya ke tipe penomoran otomatis. Kita perlu menambahkan identitas ke pernyataan pembuatan SQL untuk menunjukkan penomoran otomatis!
2. Selama konversi, SQLSERVER secara default menggunakan tipe smalldatetime untuk bidang terkait tanggal. Yang terbaik adalah mengubahnya ke tipe datetime, karena tipe datetime memiliki rentang yang lebih besar daripada tipe smalldatetime. Saya mengalami situasi ini. Saat menggunakan tipe tanggalwaktu kecil, konversi gagal, tetapi saat menggunakan tipe tanggalwaktu, konversi berhasil.
3. Pernyataan SQL yang digunakan untuk mengoperasikan kedua database tidak persis sama. Misalnya: saat menghapus record di database ACCESS, gunakan: "delete*fromuserwhereid=10", tetapi saat menghapus database SQLSERVER, gunakan: "deleteuserwhereid= 10".
4. Fungsi tanggal berbeda. Saat memproses database ACCESS, fungsi seperti date() dan time() dapat digunakan. Namun, saat memproses database SQLSERVER, hanya fungsi seperti dateiff dan dateadd yang dapat digunakan, tetapi tidak tanggal (), waktu ( ) dan fungsi lainnya.
5. Saat memproses database ACCESS, beberapa fungsi VB, seperti fungsi cstr(), dapat digunakan secara langsung dalam pernyataan sql, namun saat memproses database SQLSERVER, fungsi tersebut tidak dapat digunakan.
5. Terkait masalah pernyataan, penambahan kolom secara otomatis perlu ditulis ulang. Bidang penomoran otomatis yang sering digunakan dalam akses bukanlah int yang bertambah secara otomatis setelah diimpor ke mssql. Ini perlu diatur secara manual. Ubah "tidak" pada bidang penomoran otomatis yang diimpor menjadi "ya" dan "seed" . dan "jumlah kenaikan" keduanya "1" untuk menjadi angka otomatis.
Semua nilai default hilang. Terutama tipe numerik dan tipe tanggal
Semua now(), time(), dan date() harus diubah menjadi getdate()
Semua tanggaliff('d',waktu1,waktu2) harus diubah menjadi tanggaliff(hari,waktu1,waktu2)
Semua tanggaliff('ww',waktu1,waktu2) harus diubah menjadi tanggaliff(minggu,waktu1,waktu2)
Semua tanggaliff('d',waktu1,waktu2) harus diubah menjadi tanggaliff(hari,waktu1,waktu2)
Di mssqlserver, ada banyak kata cadangan yang tidak tersedia untuk diakses. Saat Anda mengimpor data ke mssql, masalah muncul. Ketika mssql diimpor, secara otomatis akan menambahkan "[nama field]" ke field ini (termasuk nama tabel dalam database, oleh karena itu, Anda harus memodifikasi skrip Anda dan menambahkan nama field yang sesuai (atau nama tabel, atau mengubahnya). nama bidang ke kata khusus yang bukan mssql
Saat menggunakan akses untuk menggunakan waktu, semua orang suka menggunakan pernyataan SQL seperti "select*fromaaaa whiletime="&now()". Namun, tidak ada fungsi "now()" di mssql, tetapi "getdate()" digunakan, jadi , "now()" di semua pernyataan sql harus diganti dengan "getdate()".
Fungsi tanggal berbeda. Dalam pemrosesan database ACCESS, fungsi seperti tanggal() dan waktu() dapat digunakan, tetapi untuk
Dalam pemrosesan database SQLSERVER, hanya fungsi seperti dateiff dan dateadd yang dapat digunakan, tetapi fungsi seperti date() dan time() tidak dapat digunakan.
Selama konversi, SQLSERVER defaultnya adalah tipe smalldatetime untuk bidang terkait tanggal.