สอบถามเรื่องการย้าย Database จาก access ไปเป็น SQL Server



0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้

21 ก.พ. 63 , 10:42:45
อ่าน 879 ครั้ง

mtaccess

ขอสอบถามเรื่องการย้าย Database จาก access ไปเป็น SQL Server ด้วยค่ะ
ปัจจุบันมีการเขียนโปรแกรมและ database ด้วย MS access 2013
อยากจะทำการย้ายแค่ Database ไปไว้ที่ SQL Server แต่ยังคงใช้หน้าจอของ Access สามารถทำยังไงได้บ้างคะ รบกวนแนะนำด้วยค่ะ

 

24 ก.พ. 63 , 11:49:24
ตอบกลับ #1

Kxess

ลองดูคลิปนี้ครับ


 
โพสต์นี้ได้รับคำขอบคุณจาก: mtaccess

25 ก.พ. 63 , 10:19:25
ตอบกลับ #2

mtaccess

ขอบคุณมากๆนะคะ สำหรับคลิป ถ้าเราอยากจะย้ายข้อมูลที่อยู่ใน Access เดิมไปไว้บน SQL ด้วยละคะ มีวิธีทำอย่างไรบ้างคะ ลองทำแล้ว เหมือนไม่พบนามสกลุ .accdb (MS Access 2013)
เลยไม่สามารถ import table ที่อยู่ใน Access เข้า SQL ได้
« แก้ไขครั้งสุดท้าย: 26 ก.พ. 63 , 12:18:28 โดย thaiaccboard »

 

25 ก.พ. 63 , 11:45:59
ตอบกลับ #3

Kxess

เบื้องต้นต้องทำให้ access ติดต่อกับ sql server ให้ได้ก่อนนะครับ (ทำตามคลิป)

ถ้าได้แล้ว สามารถ คลิกขวาที่ตารางที่อยู่ใน access



- เลือกแหล่งข้อมูลที่เราสร้างไว้ มันจะไปสร้างตารางไว้ใน sql server ให้เลย



ปล. มันอาจจะมีปัญหาอยู่บ้างนะครับ บางตาราง อาจจะ export ไม่ได้
ถ้า export ไม่ได้ ผมจะใช้วิธี export เป็น excel แล้วไป import ที่ sql server แทน

 
โพสต์นี้ได้รับคำขอบคุณจาก: mtaccess

25 ก.พ. 63 , 13:47:58
ตอบกลับ #4

mtaccess

ขอบคุณมากๆนะคะ เดี๋ยวจะลองทำดูนะคะ

 

25 ก.พ. 63 , 14:48:42
ตอบกลับ #5

mtaccess

เบื้องต้นต้องทำให้ access ติดต่อกับ sql server ให้ได้ก่อนนะครับ (ทำตามคลิป)

ถ้าได้แล้ว สามารถ คลิกขวาที่ตารางที่อยู่ใน access



- เลือกแหล่งข้อมูลที่เราสร้างไว้ มันจะไปสร้างตารางไว้ใน sql server ให้เลย



ปล. มันอาจจะมีปัญหาอยู่บ้างนะครับ บางตาราง อาจจะ export ไม่ได้
ถ้า export ไม่ได้ ผมจะใช้วิธี export เป็น excel แล้วไป import ที่ sql server แทน



มี Table เดียวค่ะที่ Export จาก Access ไป SQL ไม่ได้ Table นี้เป็น Table หลักมีข้อมูลประมาณ 13,000 กว่า Record แสดง Error แบบนี้ค่ะ
เกี่ยวกับมีข้อมูลมากเกินไปรึเปล่าคะ เพราะลอง Export แบบไม่มีข้อมูลใดๆสามารถ Export Table นี้ได้ค่ะ ลอง import แบบไฟล์ Excel ก็ไม่ได้ค่ะ

 

25 ก.พ. 63 , 16:23:58
ตอบกลับ #6

Kxess

แค่หลักหมื่น ไม่น่าจะมากไปครับ เพราะผมลองหลักหมื่นก็สบาย ๆ
ผมแนะนำให้ export ออกมาเป็น excel ดีกว่าครับ

- ใน Acess การ export เป็น excel ต้องเป็น excel 97 - 2003 ครับ
- ใน sql server ตอนทำการ import ตรง Destination ให้เลือกเป็น SQL Server Native Client 11.0
- ตารางที่เป็น Identity Specification (autonumber) ให้ปรับเป็น No ก่อนที่จะ import ครับ หลัง import ให้มาปรับเป็น yes


//ตัวอย่างการ import

 
โพสต์นี้ได้รับคำขอบคุณจาก: mtaccess

25 ก.พ. 63 , 17:02:07
ตอบกลับ #7

mtaccess

แค่หลักหมื่น ไม่น่าจะมากไปครับ เพราะผมลองหลักหมื่นก็สบาย ๆ
ผมแนะนำให้ export ออกมาเป็น excel ดีกว่าครับ

- ใน Acess การ export เป็น excel ต้องเป็น excel 97 - 2003 ครับ
- ใน sql server ตอนทำการ import ตรง Destination ให้เลือกเป็น SQL Server Native Client 11.0
- ตารางที่เป็น Identity Specification (autonumber) ให้ปรับเป็น No ก่อนที่จะ import ครับ หลัง import ให้มาปรับเป็น yes


//ตัวอย่างการ import
youtube.com/watch?v=seS8Yd_6nzs


เดี๋ยวลองดูค่ะ ขอบคุณมากๆนะคะ

 

26 ก.พ. 63 , 11:00:55
ตอบกลับ #8

mtaccess

Import ได้แล้วค่ะ แต่ตอนนี้ติดปัญหาการเรื่อง Code โปรแกรมที่เขียนไว้ connect database ไปที่ sql ไม่ได้ค่ะ




โค้ดที่เขียนหน้า Login ตามนี้ค่ะ เดิมใช้ Database Access ถ้าใช้ Database SQL ต้องแก้ไขให้สามารถใช้ได้ยังไงได้บ้างคะ รบกวนแนะนำด้วยค่ะ

ปล.Database ทำการ Link SQL มาค่ะ


โค๊ด: [Select]
Option Compare Database

Private Sub cmdCancel_Click()
Me.txtUsername = ""
Me.txtPassword = ""
End Sub

Private Sub cmdOK_Click()
Dim UserLevel As String
Dim WorkerName As String
Dim TempLoginID As String

If IsNull(Me.txtUsername) Then
    MsgBox "¡ÃسÒãÊèª×èͼÙéãªé", vbInformation, "ª×èͼÙéãªé"
    Me.txtUsername.SetFocus
ElseIf IsNull(Me.txtPassword) Then
    MsgBox "¡ÃسÒãÊèÃËÑʼèÒ¹", vbInformation, "ÃËÑʼèÒ¹"
    Me.txtPassword.SetFocus
Else

    If (IsNull(DLookup("dbo_tblUser.UserLogin", "dbo_tblUser", "dbo_tblUser.UserLogin ='" & Me.txtUsername.Value & "'"))) Or (IsNull(DLookup("dbo_tblUser.Password", "tblUser", "dbo_tblUser.Password ='" & Me.txtPassword.Value & "'"))) Then
        MsgBox "ª×èͼÙéãªéËÃ×ÍÃËÑʼèÒ¹äÁè¶Ù¡µéͧ"
    Else
            TempLoginID = Me.txtUsername.Value
            WorkerName = DLookup("dbo_tblUser.UserName", "dbo_tblUser", "dbo_tblUser.UserLogin ='" & Me.txtUsername.Value & "'")
            UserLevel = DLookup("dbo_tblUser.UserSecurity", "dbo_tblUser", "dbo_tblUser.UserLogin ='" & Me.txtUsername.Value & "'")
            DoCmd.Close
                If UserLevel = "Admin" Or UserLevel = "RC" Then
                    DoCmd.OpenForm "frmCheckCardIDandSave"
                    Forms![frmCheckCardIDandSave]![txtLogin] = TempLoginID
                    Forms![frmCheckCardIDandSave]![txtUser] = WorkerName
                Else
                    MsgBox "ª×èͼÙéãªéäÁèÁÕÊÔ·¸Ôìà¢éÒãªé§Ò¹"
                    DoCmd.OpenForm "frmLogin"
                End If
           
    End If
End If
End Sub


 

27 ก.พ. 63 , 09:10:33
ตอบกลับ #9

Kxess


ดูในคำสั่ง Dlookup ครับ ตารางชื่อ tblUser ไม่มี มันควรจะเป็น dbo_tblUser

ถ้ามีหลายตาราง วิธีแก้ชื่อตารางเก่าเป็นชื่อใหม่ ให้ Find and replace โค้ดทั้งหมดครับ

 
โพสต์นี้ได้รับคำขอบคุณจาก: mtaccess

02 มี.ค. 63 , 11:26:30
ตอบกลับ #10

mtaccess

: สอบถามเรื่องการย้าย Database จาก access ไปเป็น SQL Server
« ตอบกลับ #10 เมื่อ: 02 มี.ค. 63 , 11:26:30 »

ดูในคำสั่ง Dlookup ครับ ตารางชื่อ tblUser ไม่มี มันควรจะเป็น dbo_tblUser

ถ้ามีหลายตาราง วิธีแก้ชื่อตารางเก่าเป็นชื่อใหม่ ให้ Find and replace โค้ดทั้งหมดครับ

ทำได้แล้วค่ะ ขอบคุณมากๆนะคะ

 

02 มี.ค. 63 , 14:23:45
ตอบกลับ #11

mtaccess

: สอบถามเรื่องการย้าย Database จาก access ไปเป็น SQL Server
« ตอบกลับ #11 เมื่อ: 02 มี.ค. 63 , 14:23:45 »
ติดปัญหาเรื่อง ID รัน Auto ค่ะ หลังจากได้ทำการ Export ข้อมูลออกเป็น Excel ไฟล์เพื่อ Import เข้า SQL
และได้ทำการทดสอบ insert ข้อมูลจากหน้า Form ใน MS Access ข้อมูล ID เป็น NULL ค่ะ เนื่องจากมีการแก้ไขตอน import ไฟล์ excel ตรง ID จาก float เป็น int แล้วพยายามแก้ไขตรง Identity ไม่สามารถแก้ไขตรงหน้า Design ได้ค่ะ รบกวนแนะนำด้วยค่ะ

« แก้ไขครั้งสุดท้าย: 02 มี.ค. 63 , 14:43:36 โดย mtaccess »

 

02 มี.ค. 63 , 16:19:14
ตอบกลับ #12

Kxess

: สอบถามเรื่องการย้าย Database จาก access ไปเป็น SQL Server
« ตอบกลับ #12 เมื่อ: 02 มี.ค. 63 , 16:19:14 »
ไม่ค่อยเข้าใจคำถามครับ
หมายถึงปรับ Is Identity เป็น Yes แล้วกด save ไม่ได้หรอครับ ?

ได้กำหนด Primary Key ให้ ID รึยังครับ

และเวลาเพิ่มข้อมูล ID ห้ามเป็นค่าว่าง


 
โพสต์นี้ได้รับคำขอบคุณจาก: mtaccess

05 มี.ค. 63 , 11:40:30
ตอบกลับ #13

mtaccess

: สอบถามเรื่องการย้าย Database จาก access ไปเป็น SQL Server
« ตอบกลับ #13 เมื่อ: 05 มี.ค. 63 , 11:40:30 »
คือมีการ Export ไฟล์ข้อมูลจาก Access ไป SQL เรียบร้อยแล้วค่ะ
ทีนี้ทำการทดสอบบันทึกข้อมูลที่ Database ตัวใหม่คือ SQL ตัว ID ไม่รันหมายเลขต่อเนื่องค่ะ กลายเป็นบันทึกค่า Null ลงไปเแทนตรง ID แบบนี้นะคะ
รบกวนแนะนำด้วยค่ะ




ปล.Export file เป็น Excel แล้ว Import เข้า SQL ตรงหน้า Design ID มีค่าตามรูปค่ะ ลองแก้ไขเป็น int แล้วไม่ให้แก้ไขค่ะ


 

05 มี.ค. 63 , 11:44:19
ตอบกลับ #14

mtaccess

: สอบถามเรื่องการย้าย Database จาก access ไปเป็น SQL Server
« ตอบกลับ #14 เมื่อ: 05 มี.ค. 63 , 11:44:19 »
ไม่ค่อยเข้าใจคำถามครับ
หมายถึงปรับ Is Identity เป็น Yes แล้วกด save ไม่ได้หรอครับ ?

ได้กำหนด Primary Key ให้ ID รึยังครับ

และเวลาเพิ่มข้อมูล ID ห้ามเป็นค่าว่าง

แก้ไขในหน้า Design ไม่ได้เลยค่ะ เนื่องจาก Table นี้มีข้อมูลประมาณ 14,000 record แล้ว ติด error ตามรูปนี้ค่ะ รบกวนแนะนำด้วยนะคะ ขอบคุณค่ะ


 

05 มี.ค. 63 , 16:20:28
ตอบกลับ #15

Kxess

: สอบถามเรื่องการย้าย Database จาก access ไปเป็น SQL Server
« ตอบกลับ #15 เมื่อ: 05 มี.ค. 63 , 16:20:28 »
Tools >> Options >> Designers

ติ๊กออก Prevent Saving changes that require table re-creation



*คำอธิบาย การแก้ไขข้อมูลออกแบบตารางพวกนี้ มันจะดรอปและสร้างตารางขึ้นมาใหม่ในชื่อเดิม ซึ่งอาจจะส่งผลให้ข้อมูลสูญหายโดยไม่ได้ตั้งใจ เช่นเผลอลบคอลัมน์แล้วกดบันทึก ข้อมูลในคอลัมน์นั้นก็จะหายไปหมด
ถ้าแก้ไขเสร็จแล้ว ให้มาติ๊กกลับไว้เหมือนเดิมครับ
« แก้ไขครั้งสุดท้าย: 05 มี.ค. 63 , 16:27:37 โดย Kxess »

 
โพสต์นี้ได้รับคำขอบคุณจาก: mtaccess


บอร์ดเรียนรู้ Access สำหรับคนไทย