Category Archive SQL Server

ติดตั้ง SQL Server Management Studio (smss) แล้วค้าง

ถ้าติดตั้ง SQL Server Management Studio แล้วค้างอยู่ที่ข้อความ “Loading packages. Please wait…” เป็นชั่วโมงไม่ขยับไปไหน แก้ได้โดย

  1. พยาม Cancel ตัวติดตั้งก่อนถ้าทำไม่ได้ให้ end task ไปเลย
  2. ลบไฟล์ทั้งหมดใน temp file
    • โดยใส่ %temp% ใน Windows File Explorer แล้ว enter
    • หรือจะเปิด C:\Users\<username>\AppData\Local\Temp ก็ได้
      จากนั้นลบไฟล์ทั้งหมด ที่สามารถจะลบได้ออกไป
  3. ลบ registry
    • เปิด command prompt โดยสิทธ์ administrator พิมพ์
      reg DELETE “HKLM\SOFTWARE\WOW6432Node\Microsoft\Microsoft SQL Server Management Studio” /reg:32
      กด enter จะเห็นคำถาม
      Permanently delete the registry key HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Microsoft SQL Server Management Studio (Yes/No)?
      พิมพ์ yes แล้ว enter
    • หรือเปิด registry editor โดยสิทธ์ administrator แล้วค้นหา “HKLM\SOFTWARE\WOW6432Node\Microsoft\Microsoft SQL Server Management Studio” จากนั้นก็ลบออกไป
  4. restart windows อาจจะเข้าไปลบไฟล์อีกครั้ง
  5. ติดตั้ง smss ตามปกติ

ขอบคุณ How To Fix SSMS Installation Stuck Issue

SQL Server: Kill process ของข้าให้หมด

มีแก้งานที่เขียน query ได้โหดยูเครนมาก (รัสเซียได้พิสูจน์ให้เห็นแล้วว่ากาก) ใช้ cpu สูงมาก ใช้ ram เกือบหมดเม็ค แล้วมีคนใช้งานอยู่พร้อม ๆ กัน T-T เลยหา script มาจัดการดีด connection ที่ใช้อยู่ในเครื่องตัวเองทิ้งยกเว้นที่ใช้อยู่ใน sql server management studio (ssms) และโปรแกรม app ที่กำลังเขียนอยู่

DECLARE @SqlCmd VARCHAR(1000)
  
	,@HostName VARCHAR(100)-- Set the hostname name from which to kill the connections

  
	--SET @HostName = 'Pitt_P'

SET @HostName = HOST_NAME()

SET @SqlCmd = ''  SELECT @Sqlcmd = @SqlCmd + CHAR(13) + CHAR(10) + 'KILL ' + convert(CHAR(10), spid) + ' '
 
FROM master.dbo.sysprocesses
 
WHERE hostname = @HostName
 
	AND DBID <> 0
 
	AND spid <> @@spid PRINT @sqlcmd EXEC(@Sqlcmd)
 
GO

แก้จากต้นแบบ Kill all processes associated with a hostname โดยดึงข้อมูล HOST HOST_NAME แทนที่จะใส่ชื่อเครื่องตัวเองไป

SQL Server: update limit

เทสงานที่มีการบันทึกข้อมูลไว้ ถ้าจะทำอีกครั้งก็ต้อง update กลับไปเป็นเหมือนเดิม แต่เพราะว่าเงื่อนไขมันกว้างมาก ๆ เลยไปอัพเดตทั้ง table เลยมันช้าไป เปลืองทรัพยากร เลยหาวิธีอื่นดู

  • ROWCOUNT อย่างต้องการให้ update แค่ 100 รายการแรก
    • SET ROWCOUNT 100;
      UPDATE table_name
      SET colunm_name = …
      WHERE column_name = …
      SET ROWCOUNT 0;
  • TOP จะง่ายกว่าหน่อย
    • UPDATE TOP(100) table_name
      SET colunm_name = …
      WHERE column_name = …
  • CTE
    • ;WITH CTE AS
      (
      SELECT TOP 100 *
      FROM table_name
      ORDER BY colunm_name
      )
      UPDATE CTE SET colunm_name = …
  • Sub Query
    • UPDATE table_name
      SET column_name =…
      WHERE column_id IN (
      SELECT TOP 100 column_id
      FROM table_name
      WHERE column_name = 0
      )

เลือกเอาแบบที่ชอบได้เลยครับ ตัวที่ผมชอบที่สุดคือ ROWCOUNT เพราะว่าใช้ query จริง ๆ มาวางได้เลย

ติดตั้ง Poor Man’s T-SQL Formatter ใน SSMS รุ่นใหม่ ๆ

Poor Man’s T-SQL Formatter จะติดตั้งได้ใน SQL Server Management Studio ( SSMS ) เวอร์ชั่นเก่า ๆ ได้ แต่ตัวติดตั้งรุ่นใหม่ ๆ เมื่อติดตั้งแล้ว จะไม่สามารถคลิกเมนูของตัว extension ได้ แก้ได้ง่าย ๆ โดย

  1. ปิด SQL Server Management Studio
  2. ถ้ายังไม่ได้ติดตั้ง .Net 2.0 ให้ติดตั้ง .NET Framework 2.0 ก่อนโดยวิธี How-To How to Enable .NET Framework 2.0 and 3.5 in Windows 11
  3. ถ้าต้องการใช้กับ SSMS 19 ต้องติดตั้ง SSMS 18 ในเครื่องก่อน จากนั้นติดตั้ง plugin ตามปกติ แล้ว copy C:\Program Files (x86)\Microsoft SQL Server Management Studio 18\Extensions ไปเป็น C:\Program Files (x86)\Microsoft SQL Server Management Studio 19\Extensions
  4. เปิดไฟล์ C:\Program Files (x86)\Microsoft SQL Server Management Studio {version}\Common7\IDE\Ssms.exe.config เช่น
    • C:\Program Files (x86)\Microsoft SQL Server Management Studio 18\Common7\IDE\Ssms.exe.config
    • C:\Program Files (x86)\Microsoft SQL Server Management Studio 19\Common7\IDE\Ssms.exe.config
  5. ค้นหาบรรทัด <assemblyBinding
  6. เพิ่มข้อความใต้<probing privatePat
    <dependentAssembly><assemblyIdentity name="Microsoft.VisualStudio.Shell.12.0" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/> <bindingRedirect oldVersion="2.0.0.0-15.0.0.0" newVersion="15.0.0.0"/></dependentAssembly>
  7. เปิด SQL Server Management Studio ใหม่

เท่านี้ก็สามารถใช้ Poor Man’s T-SQL Formatter จัดรูปแบบ sql ได้แล้ว

Command Save Query Results to file

ถ้าต้อง query ทุกๆ วัน หรือ ทุกๆ ชั่วโมง แล้วเอาผลลัพธ์มาเก็บไว้ จะดีมั๋ยที่ทำเป็น schedule ไว้แล้วให้ทุกสิ่งทุกอย่างมันดำเนินไปตามที่มันควรจะเป็น โดยที่เราไม่ต้องทำเองทุกวัน

  1. สร้างไฟล์ที่เก็บ query ไว้ก่อนโดยผม save query จากเรื่อง สร้าง Data Dictionary แค่คลิก เป็นไฟล์ชื่อ DataDictionary.sql
  2. เปิด command ขึ้นมาโดยพิมพ์ sqlcmd ตามด้วย
    sqlcmd Utility
    Option ความหมาย ตัวอย่าง
    -S [protocol:]server[instance_name][,port] connection ของ sql server ของผมคือ MAGI\SQLEXPRESS
    -d db_name ชื่อ database
    -E (use trusted connection)
    -i input_file
    -o output_file ไฟล์ผลลัพธ์คือ OutFileName.txt

    สิศิรวมแล้วคือ

    sqlcmd -S MAGI\SQLEXPRESS -d test -E -i DataDictionary.sql -o OutFileName.txt
  3. หลังเอ็นเทอร์ไฟล์ OutFileName.txt จะถูกสร้างขี้นมาอยู่ที่เดียวกับไฟล์ DataDictionary.sql
  4. นำไปดัดแปลงตามความเหมาะสมกับงานที่ทำครับ

อ่านเพิ่มเติม

สร้าง Data Dictionary แค่คลิก

สร้าง Data Dictionary ใน sql server แบบง่ายๆ เพียงแค่คลิกเท่านั้น บทความนี้เป็นเวอร์ชั้นปรับปรุงของ สร้าง Data Dictionary แบบด่วนๆ ให้ทำได้ง่ายขั้น

  1. เปิด sql server management studio เลือก database ที่ต้องการ คลิกขวา New Query
  2. copy
    SET ANSI_PADDING  OFF;
    GO
    
    SET NOCOUNT ON;
    GO
    
    SET TEXTSIZE 8192;
    GO
    
    PRINT '<!doctype html>';
    PRINT '<html lang="th">';
    PRINT '<head>';
    PRINT '<meta charset="utf-8" />';
    PRINT '<title>script generates a full data dictionary for all tables in a SQL Server by Pitt Phunsanit</title>';
    PRINT '<style>table {background: #7ba0cd;border-collapse: collapse;border-left: solid 1px #7ba0cd;border-right: solid 1px #7ba0cd;font-family: "Calibri", "sans-serif";font-size: 11pt;width: 100%;}table tr {background: #FFFFFF;border-bottom: solid 1px #7ba0cd;}table thead tr {background-color: #4e80bc;color: white;}table tbody tr:nth-of-type(odd) {background: #d2deed;border-bottom: solid 1px #FFFFFF;box-shadow: 0 2px 0 -1px #7ba0cd;}table tbody tr.case,table tfoot tr {background: #d7d7d7;}</style>';
    PRINT '</head>';
    PRINT '<body>';
    PRINT '<h1>' + DB_NAME() + '</h1>';
    PRINT '<h3>create date : ' + convert(VARCHAR(10), GETDATE(), 111) + '</h3>';
    
    DECLARE @record CURSOR;
    DECLARE @table VARCHAR(128);
    DECLARE @object_id INT;
    DECLARE @schema_id INT;
    
    SET @record = CURSOR
    FOR
    SELECT [name] AS [table], [object_id], [schema_id]
    FROM sys.tables AS t
    WHERE type_desc = 'USER_TABLE'
    
    OPEN @record
    
    FETCH NEXT
    FROM @record
    INTO @table, @object_id, @schema_id
    
    WHILE @@FETCH_STATUS = 0
    BEGIN
        SELECT CAST('<br><table><caption><b>' + @table + '</b>' + ISNULL(' : '+RTRIM(CAST(ep.[value] AS NVARCHAR(4000))), '') + '</caption>' AS NTEXT)
            ,CAST('<thead><tr>' + '<td style="width:100px;"><b>Primary Key</b></td>' + '<td style="width:200px;"><b>Foreign key</b></td>' + '<td style="width:400px;"><b>Column Name</b></td>' + '<td><b>Description</b></td>' AS NTEXT)
            ,CAST('<td style="width:100px;"><b>Data Type</b></td>' + '<td style="width:100px;"><b>Allow Nulls</b></td>' + '<td style="width:100px;"><b>Identity</b></td>' + '<td style="width:100px;"><b>Default Value</b></td>' + '</tr></thead><tbody>' AS NTEXT)
        FROM sys.schemas AS s
        -- get description of table, if available
        LEFT OUTER JOIN sys.extended_properties AS ep ON ep.major_id = @object_id
            AND ep.minor_id = 0
            AND ep.NAME = 'MS_Description'
            AND ep.class = 1
        WHERE s.[schema_id] = @schema_id
        AND NOT EXISTS (
                SELECT *
                FROM sys.extended_properties ms
                WHERE ms.major_id = @object_id
                    AND ms.minor_id = 0
                    AND ms.class = 1
                    AND ms.[name] = 'microsoft_database_tools_support'
                )
    
        UNION ALL
    
      SELECT '' AS html
            ,'<tr><td>' + CASE
                WHEN pk.column_id IS NOT NULL
                    THEN 'PK'
                ELSE ''
                END + '</td><td>' + CASE
                WHEN fk.primary_table IS NOT NULL
                    THEN fk.primary_table + '.' + fk.primary_column
                ELSE ''
                END + '</td><td>' + c.[name] + '</td><td>' + ISNULL(RTRIM(CAST(ep.[value] AS NVARCHAR(4000))), '') + '</td><td>' + CASE
                WHEN uty.[name] IS NOT NULL
                    THEN uty.[name]
                ELSE ''
                END + CASE
                WHEN uty.[name] IS NOT NULL
                    AND sty.[name] IS NOT NULL
                    THEN ' (
                '
                ELSE ''
                END + CASE
                WHEN sty.[name] IS NOT NULL
                    THEN sty.[name]
                ELSE ''
                END + CASE
                WHEN sty.[name] IN (
                        'CHAR'
                        ,'NCHAR'
                        ,'VARCHAR'
                        ,'NVARCHAR'
                        ,'BINARY'
                        ,'VARBINARY'
                        )
                    THEN ' (
                    ' + CASE
                            WHEN c.max_length = - 1
                                THEN 'max'
                            ELSE CASE
                                    WHEN sty.[name] IN (
                                            'NCHAR'
                                            ,'NVARCHAR'
                                            )
                                        THEN CAST(c.max_length / 2 AS VARCHAR(MAX))
                                    ELSE CAST(c.max_length AS VARCHAR(MAX))
                                    END
                            END + '
                    ) '
                WHEN sty.[name] IN (
                        'NUMERIC'
                        ,'DECIMAL'
                        )
                    THEN ' (
                    ' + CAST(c.precision AS VARCHAR(MAX)) + '
                    ,' + CAST(c.scale AS VARCHAR(MAX)) + '
                    ) '
                ELSE ''
                END + CASE
                WHEN uty.[name] IS NOT NULL
                    AND sty.[name] IS NOT NULL
                    THEN '
                ) '
                ELSE ''
                END + '</td><td>' + CASE
                WHEN c.is_nullable = 1
                    THEN 'Y'
                ELSE ''
                END + '</td><td>' AS html1
            ,CASE
                WHEN c.is_identity = 1
                    THEN 'Y'
                ELSE ''
                END + '</td><td>' + ISNULL(dc.[definition], '') + '</td></tr>' AS html2
        FROM sys.columns AS c
        INNER JOIN sys.schemas s ON s.[schema_id] = @schema_id
        -- get name of user data type
        LEFT OUTER JOIN sys.types uty ON uty.system_type_id = c.system_type_id
            AND uty.user_type_id = c.user_type_id
            AND c.user_type_id <> c.system_type_id
        -- get name of system data type
        LEFT OUTER JOIN sys.types sty ON sty.system_type_id = c.system_type_id
            AND sty.user_type_id = c.system_type_id
        -- get description of column, if available
        LEFT OUTER JOIN sys.extended_properties ep ON ep.major_id = @object_id
            AND ep.minor_id = c.column_id
            AND ep.[name] = 'MS_Description'
            AND ep.[class] = 1
        -- get default' s code TEXT
        LEFT OUTER JOIN sys.default_constraints dc ON dc.parent_object_id = @object_id
            AND dc.parent_column_id = c.column_id
        -- check for inclusion in primary key
        LEFT OUTER JOIN (
            SELECT ic.column_id
                ,i.[object_id]
            FROM sys.indexes i
            INNER JOIN sys.index_columns ic ON ic.index_id = i.index_id
                AND ic.[object_id] = i.[object_id]
            WHERE i.is_primary_key = 1
            ) pk ON pk.column_id = c.column_id
            AND pk.[object_id] = @object_id
        -- check for inclusion in foreign key
        LEFT OUTER JOIN (
            SELECT CASE
                    WHEN s.[name] = 'dbo'
                        THEN pk.[name]
                    ELSE s.[name] + '.' + pk.[name]
                    END AS primary_table
                ,pkc.[name] AS primary_column
                ,fkc.parent_object_id
                ,fkc.parent_column_id
            FROM sys.foreign_keys fk
            INNER JOIN sys.tables pk ON fk.referenced_object_id = pk.[object_id]
            INNER JOIN sys.schemas s ON s.[schema_id] = pk.[schema_id]
            INNER JOIN sys.foreign_key_columns fkc ON fkc.constraint_object_id = fk.[object_id]
                AND fkc.referenced_object_id = pk.[object_id]
            INNER JOIN sys.columns pkc ON pkc.[object_id] = pk.[object_id]
                AND pkc.column_id = fkc.referenced_column_id
            ) fk ON fk.parent_object_id = @object_id
            AND fk.parent_column_id = c.column_id
        WHERE c.object_id = @object_id
        AND NOT EXISTS (
                SELECT *
                FROM sys.extended_properties ms
                WHERE ms.major_id = @object_id
                    AND ms.minor_id = 0
                    AND ms.class = 1
                    AND ms.[name] = 'microsoft_database_tools_support'
                )
    
        UNION ALL
    
        SELECT '' AS html
            ,'' AS html1
            ,'</tbody></table><br><hr><br>' AS html2
    
    
           FETCH NEXT
           FROM @record
           INTO @table, @object_id, @schema_id
    END
    
    CLOSE @record
    
    DEALLOCATE @record
    
    PRINT '<a href="https://pitt.plusmagi.com">PlusMagi.com by Pitt Phunsanit ([email protected])</a>';
    PRINT '</body>';
    PRINT '</html>';
    
  3. คลิกปุ่ม Results to file หรือ Ctrl + Shift + F กด Excute หรือ F5 แล้วเซฟเป็นไฟล์ ที่ต้องการแต่ลงท้ายด้วย .html เพราะว่าผลลัพธ์ที่ได้จะเป็นเว็บครับ
  4. เปิดไฟล์ที่ส่งออกออกมาแล้วคัดลอกใส่โปรแกรมเวิร์ดหรือเอ็กเซลได้เลยครับ

ตัวอย่างผลงานที่เร็วกว่ามาม่า

test

create date : 2016/07/14

—————————————————————————————————————————————————————————————————————————————————————- —————————————————————————————————————————————————————————————————————————————————————- —————————————————————————————————————————————————————————————————————————————————————-

areas_cities
Primary Key Foreign key Column Name Description Data Type Allow Nulls Identity Default Value
PK city_id int
status tinyint Y
geo_id ภูมิภาค int ((0))
province_id int ((0))
amphur_code varchar (
4
)
Y


—————————————————————————————————————————————————————————————————————————————————————- —————————————————————————————————————————————————————————————————————————————————————- —————————————————————————————————————————————————————————————————————————————————————-

areas_cities_lang
Primary Key Foreign key Column Name Description Data Type Allow Nulls Identity Default Value
PK areas_cities.city_id city_id int
PK language char (
2
)
name nvarchar (
600
)


PlusMagi.com by Pitt Phunsanit ([email protected])
ดูไม่สวย แต่จริงๆ มันมีสีสันด้วยนะครับ ไม่ใช่ตารางโล้นๆ

เวลานำไปให้ให้เครดิตผมด้วยนะครับ ถ้าหากเจอข้อบกพร่องแจ้งผมด้วยนะครับ จะได้ปรับปรุงให้คนอื่นใช้กันต่อไป “สังคมแห่งการแบ่งปันครับ”

Cannot connect to \SQLEXPRESS.

เห็นมีถามกันเป็นระยะกับเรื่อง

TITLE: Connect to Server
——————————

Cannot connect to \SQLEXPRESS.

——————————
ADDITIONAL INFORMATION:

An exception occurred while executing a Transact-SQL statement or batch. (Microsoft.SqlServer.ConnectionInfo)

——————————

Database ‘mssqlsystemresource’ is being recovered. Waiting until recovery is finished. (Microsoft SQL Server, Error: 922)

For help, click: http://go.microsoft.com/fwlink?ProdName=Microsoft%20SQL%20Server&ProdVer=12.00.2000&EvtSrc=MSSQLServer&EvtID=922&LinkId=20476

——————————
BUTTONS:

OK
——————————

อ่านซะงงจริงๆ แล้วปัญหาคือ service SQLAgent$SQLEXPRESS หรือ SQL Server Agent (SQLEXPRESS) มัน start ไม่สำเหร็จ ที่เจอบ่อยๆคือ MSSQL$SQLEXPRESS หรือ SQL Server (SQLEXPRESS) มัน start ขึ้นมาก่อน วิธีแก้

  • ไปที่ run พิมพ์ services.msc เอ็นเทอร์
  • แล้วเลื่อนไปหา พวก SQL xxx คลิกขวา Stop ให้หมด
  • แล้วคลิก SQL Server Agent (SQLEXPRESS) คลิกขวา start
  • ทดลอง connect ดูใหม่อีกครั้ง น่าจะ connect ได้แล้ว
  • ถ้าใช้เครื่องเป็น web server ด้วย SQL Server Reporting Services (SQLEXPRESS) ก็ให้ stop และเลือก property เปลี่ยน startup type เป็น manual เพราะว่ามันใช้ port 80 เหมือนกับพวกเว็บเซิร์ฟเวอร์ เป็นสาเหตุที่ทำให้ apache start ไม่สำเร็จได้

จริงๆ ถ้า ms ใส่ใจอีกซักหน่อย หรือเขียน error message ให้ดีกว่านี้ซะหน่อยก็คงไม่มีคนเข้ามาถามกันบ่อยๆ

อีกจุดที่ ต้องดูถ้ายัง connect ไม่ได้คือ ไปที่ เมนู > Microsoft SQL Server 20xx > SQL Server Configuration Manager ดูพวก TCP/IP (มีหลายที่) ให้เปลี่ยนเป็น enable แล้ว restart SQL Server Agent ใหม่

Cannot connect to \SQLEXPRESS.

เห็นมีถามกันเป็นระยะกับเรื่อง

TITLE: Connect to Server
——————————
Cannot connect to \SQLEXPRESS.
——————————
ADDITIONAL INFORMATION:
An exception occurred while executing a Transact-SQL statement or batch. (Microsoft.SqlServer.ConnectionInfo)
——————————
Database ‘mssqlsystemresource’ is being recovered. Waiting until recovery is finished. (Microsoft SQL Server, Error: 922)
For help, click: http://go.microsoft.com/fwlink?ProdName=Microsoft%20SQL%20Server&ProdVer=12.00.2000&EvtSrc=MSSQLServer&EvtID=922&LinkId=20476
——————————
BUTTONS:
OK
——————————

อ่านซะงงจริงๆ แล้วปัญหาคือ service SQLAgent$SQLEXPRESS หรือ SQL Server Agent (SQLEXPRESS) มัน start ไม่สำเหร็จ ที่เจอบ่อยๆคือ MSSQL$SQLEXPRESS หรือ SQL Server (SQLEXPRESS) มัน start ขึ้นมาก่อน วิธีแก้

  • ไปที่ run พิมพ์ services.msc เอ็นเทอร์
  • แล้วเลื่อนไปหา พวก SQL xxx คลิกขวา Stop ให้หมด
  • แล้วคลิก SQL Server Agent (SQLEXPRESS) คลิกขวา start
  • ทดลอง connect ดูใหม่อีกครั้ง น่าจะ connect ได้แล้ว
  • ถ้าใช้เครื่องเป็น web server ด้วย SQL Server Reporting Services (SQLEXPRESS) ก็ให้ stop และเลือก property เปลี่ยน startup type เป็น manual เพราะว่ามันใช้ port 80 เหมือนกับพวกเว็บเซิร์ฟเวอร์ เป็นสาเหตุที่ทำให้ apache start ไม่สำเร็จได้

จริงๆ ถ้า ms ใส่ใจอีกซักหน่อย หรือเขียน error message ให้ดีกว่านี้ซะหน่อยก็คงไม่มีคนเข้ามาถามกันบ่อยๆ

อีกจุดที่ ต้องดูถ้ายัง connect ไม่ได้คือ ไปที่ เมนู > Microsoft SQL Server 20xx > SQL Server Configuration Manager ดูพวก TCP/IP (มีหลายที่) ให้เปลี่ยนเป็น enable แล้ว restart SQL Server Agent ใหม่

Cannot connect to \SQLEXPRESS.

เห็นมีถามกันเป็นระยะกับเรื่อง

TITLE: Connect to Server
——————————

Cannot connect to \SQLEXPRESS.

——————————
ADDITIONAL INFORMATION:

An exception occurred while executing a Transact-SQL statement or batch. (Microsoft.SqlServer.ConnectionInfo)

——————————

Database ‘mssqlsystemresource’ is being recovered. Waiting until recovery is finished. (Microsoft SQL Server, Error: 922)

For help, click: http://go.microsoft.com/fwlink?ProdName=Microsoft%20SQL%20Server&ProdVer=12.00.2000&EvtSrc=MSSQLServer&EvtID=922&LinkId=20476

——————————
BUTTONS:

OK
——————————

อ่านซะงงจริงๆ แล้วปัญหาคือ service SQLAgent$SQLEXPRESS หรือ SQL Server Agent (SQLEXPRESS) มัน start ไม่สำเหร็จ ที่เจอบ่อยๆคือ MSSQL$SQLEXPRESS หรือ SQL Server (SQLEXPRESS) มัน start ขึ้นมาก่อน วิธีแก้

  • ไปที่ run พิมพ์ services.msc เอ็นเทอร์
  • แล้วเลื่อนไปหา พวก SQL xxx คลิกขวา Stop ให้หมด
  • แล้วคลิก SQL Server Agent (SQLEXPRESS) คลิกขวา start
  • ทดลอง connect ดูใหม่อีกครั้ง น่าจะ connect ได้แล้ว
  • ถ้าใช้เครื่องเป็น web server ด้วย SQL Server Reporting Services (SQLEXPRESS) ก็ให้ stop และเลือก property เปลี่ยน startup type เป็น manual เพราะว่ามันใช้ port 80 เหมือนกับพวกเว็บเซิร์ฟเวอร์ เป็นสาเหตุที่ทำให้ apache start ไม่สำเร็จได้

จริงๆ ถ้า ms ใส่ใจอีกซักหน่อย หรือเขียน error message ให้ดีกว่านี้ซะหน่อยก็คงไม่มีคนเข้ามาถามกันบ่อยๆ

อีกจุดที่ ต้องดูถ้ายัง connect ไม่ได้คือ ไปที่ เมนู > Microsoft SQL Server 20xx > SQL Server Configuration Manager ดูพวก TCP/IP (มีหลายที่) ให้เปลี่ยนเป็น enable แล้ว restart SQL Server Agent ใหม่

Cannot connect to \SQLEXPRESS.

เห็นมีถามกันเป็นระยะกับเรื่อง

TITLE: Connect to Server
——————————
Cannot connect to \SQLEXPRESS.
——————————
ADDITIONAL INFORMATION:
An exception occurred while executing a Transact-SQL statement or batch. (Microsoft.SqlServer.ConnectionInfo)
——————————
Database ‘mssqlsystemresource’ is being recovered. Waiting until recovery is finished. (Microsoft SQL Server, Error: 922)
For help, click: http://go.microsoft.com/fwlink?ProdName=Microsoft%20SQL%20Server&ProdVer=12.00.2000&EvtSrc=MSSQLServer&EvtID=922&LinkId=20476
——————————
BUTTONS:
OK
——————————

อ่านซะงงจริงๆ แล้วปัญหาคือ service SQLAgent$SQLEXPRESS หรือ SQL Server Agent (SQLEXPRESS) มัน start ไม่สำเหร็จ ที่เจอบ่อยๆคือ MSSQL$SQLEXPRESS หรือ SQL Server (SQLEXPRESS) มัน start ขึ้นมาก่อน วิธีแก้

  • ไปที่ run พิมพ์ services.msc เอ็นเทอร์
  • แล้วเลื่อนไปหา พวก SQL xxx คลิกขวา Stop ให้หมด
  • แล้วคลิก SQL Server Agent (SQLEXPRESS) คลิกขวา start
  • ทดลอง connect ดูใหม่อีกครั้ง น่าจะ connect ได้แล้ว
  • ถ้าใช้เครื่องเป็น web server ด้วย SQL Server Reporting Services (SQLEXPRESS) ก็ให้ stop และเลือก property เปลี่ยน startup type เป็น manual เพราะว่ามันใช้ port 80 เหมือนกับพวกเว็บเซิร์ฟเวอร์ เป็นสาเหตุที่ทำให้ apache start ไม่สำเร็จได้

จริงๆ ถ้า ms ใส่ใจอีกซักหน่อย หรือเขียน error message ให้ดีกว่านี้ซะหน่อยก็คงไม่มีคนเข้ามาถามกันบ่อยๆ

อีกจุดที่ ต้องดูถ้ายัง connect ไม่ได้คือ ไปที่ เมนู > Microsoft SQL Server 20xx > SQL Server Configuration Manager ดูพวก TCP/IP (มีหลายที่) ให้เปลี่ยนเป็น enable แล้ว restart SQL Server Agent ใหม่