One way to solve this is using a recursive CTE. It's probably not the fastest way, but it's the simplest way I've found in this particular situation:
DECLARE @Source varchar(200) = 'emp_id="123",emp_status="New Hire",emp_name="Smith, John A",emp_salary="2000",emp_state="VA"'
;WITH CTE AS
(
    SELECT LEFT(@Source, CHARINDEX('",', @Source)) as val, 
           RIGHT(@Source, LEN(@Source) - CHARINDEX('",', @Source)-1) as string 
    UNION ALL
    SELECT  CASE WHEN CHARINDEX('",', string) > 0 THEN
                LEFT(String, CHARINDEX('",', string))
            ELSE
                String
            END  as val,
            CASE WHEN CHARINDEX('",', string) > 0 THEN
                RIGHT(string, LEN(string) - CHARINDEX('",', string)-1) 
            ELSE
                ''
            END as string
    FROM CTE
    WHERE LEN(string) > 0
)
SELECT LEFT(val, CHARINDEX('=', val)-1) As [Column Name], 
       REPLACE(RIGHT(val, LEN(val) - CHARINDEX('=', val) -1 ), '"', '') As Value
FROM CTE
Results:
Column Name     Value
emp_id          123
emp_status      New Hire
emp_name        Smith, John A
emp_salary      2000
emp_state       VA